1. vector의 특징
2. vector 생성
std::vector<int> v1{0,1,2,3,4,5}; // 6칸의 크기에 0~5까지의 값으로 초기화
vector<int> v1(100); // v1를 0으로 100개 채움. (stack)
cout << "v1.size() : " << v1.size() << endl; // 100
cout << "v1.capacity() : " << v1.capacity() << endl; // 100
vector<int> v2(200,1); // v2를 1로 200개 초기화. (stack)
cout << "v2.size() : " << v2.size() << endl; // 200
cout << "v2.capacity() : " << v2.capacity() << endl; // 200
vector<int>* v3 = new vector<int>[10]; // new를 통한 생성도 가능. (heap)
cout << "v3->size() : " << v3->size() << endl; // 0
cout << "v3->capacity() : " << v3->capacity() << endl; // 0
delete v3; // 해제 필요.
3. vector 원소 추가.
cout << v.size() << endl; // 6 출력 ( v의 원소 개수 ), return type은 size_t
v.emplace_back(6); // v의 마지막에 6을 추가
cout << v.size() << endl; // 7 출력
v.pop_back(); // v의 마지막 원소 제거 size는 줄지만, capacity는 그대로
push_back과 emplace_back은 둘 다 C++의 std::vector 컨테이너에서 원소를 추가하는 함수이지만, 중요한 차이가 있다.
push_back 함수:
push_back 함수는 새로운 원소의 복사본을 벡터에 추가.#include <vector>
int main() {
std::vector<int> myV;
myV.push_back(13); // 13을 복사하여 추가
return 0;
}
emplace_back 함수:
emplace_back 함수는 새로운 원소를 벡터의 끝에 추가하지만, 원소를 직접 생성하고 벡터 내에서 즉시 추가.emplace_back 함수는 가볍고 효율적인 방법으로 원소를 추가할 수 있다.#include <vector>
struct MyS {
int x;
double y;
};
int main() {
std::vector<MyS> MyS_1;
MyS_1.emplace_back(12, 1.34); // 원소를 직접 생성하여 추가
return 0;
}
emplace_back은 복잡한 객체를 컨테이너에 추가할 때 유용. push_back은 이미 생성된 원소나 간단한 데이터를 추가할 때 사용할 수 있다.