벡터 생성자
in Tips. / 🚩 C++ 팁 목록 (12)
벡터의 생성자에는 여러가지 종류가 있는데, 다른 컨테이너의 원소를 복사할 수 있는 생성자도 있습니다.
복사하고자 하는 컨테이너의 범위를 [begin, end) 라고 했을 때 begin과 end를 가리키는 Iterator를 생성자의 매개변수로 넣어주면 됩니다.
#include<iostream>
#include<vector>
using namespace std;
int main(){
int arr[5] = {1,2,3,4,5};
vector<int> v(arr,arr+5);
for(int i=0; i<v.size(); i++)
cout << v[i] << " "; // 1 2 3 4 5
}
만약에 배열이 아닌 다른 컨테이너를 복사하고 싶으면 아래와 같이 할 수 있습니다.
#include<iostream>
#include<vector>
#include<map>
using namespace std;
int main(){
map<int,int> m;
m[0] = 1, m[1] = 2, m[3] = 0;
vector<pair<int,int> > v(m.begin(), m.end());
for(int i=0; i<v.size(); i++)
cout << v[i].first << " " << v[i].second << "\n"; // 0 1\n 1 2\n 3 0
}
벡터를 복사할 때는 더 간단합니다.
vector<int> v = {1,2,3,4,5};
vector<int> v2 = v, v3(v);
// v2, v3 모두 v와 같아짐