C++ vector
vector를 사용하기 위해서는 <vector> 헤더를 인클루드 해야한다.
vector는 배열 기반 컨테이너로, 길이를 변경할 수 있는 배열이라고 생각하면 이해하기 쉽다.
생성자 |
|
vector v |
빈 컨테이너 벡터 v 생성 |
vector v(n) |
벡터 v는 기본값으로 초기화된 n개의 원소를 가짐 |
vector v(n, x) |
벡터 v는 x로 초기화된 n개의 원소를 가짐 |
vector v(v2) |
벡터 v는 벡터 v2의 복사본 |
vector v(b, e) |
벡터 v는 반복자 구간 [b, e)로 초기화된 원소를 가짐 |
생성자 사용 예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <iostream> #include <vector> using namespace std; int main(void) { vector<int> v1; //길이 = 0 vector<int> v2(100); //길이 = 100 vector<int> v3(100, 5); //길이 = 100, 5로 초기화 vector<int> v4 = { 1, 2, 3, 4, 5 }; //길이 5 cout << "v1 크기 : " << v1.size() << '\n'; cout << "v2 크기 : " << v2.size() << '\n'; cout << "v3 크기 : " << v3.size() << '\n'; cout << "v4 크기 : " << v4.size() << '\n'; return 0; } | cs |
자료형으로 pair, tuple 등도 사용할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include <stdio.h> #include <vector> #include <algorithm> using namespace std; int main(void) { vector<pair<int, int>> v1 = { {10,20}, {30,40} }; vector<pair<int, int>> v2 = { make_pair(10,20) }; printf("v1 크기 : %d\n", v1.size()); printf("v2 크기 : %d\n", v2.size()); return 0; } | cs |
vector는 배열처럼 임의 접근이 가능하다. ex) v[13] = 12 //벡터의 13번째를 12로 할당
멤버 함수
push_back() |
벡터의 가장 뒤에 데이터 추가 |
pop_back() |
벡터의 마지막 데이터 제거 |
clear() |
벡터의 모든 데이터 제거 |
resize() |
벡터 크기 변경, 크기보다 뒤에 있는 데이터는 제거 |
size() |
벡터의 크기 |
erase() |
벡터의 해당 구간 데이터 제거 |
사용 예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | #include <iostream> #include <vector> int main() { std::vector<int> myvector; int sum(0); myvector.push_back(100); myvector.push_back(200); myvector.push_back(300); while (!myvector.empty()) { sum += myvector.back(); myvector.pop_back(); } std::cout << "The elements of myvector add up to " << sum << '\n'; // vector is empty for (int i = 1; i <= 10; i++) myvector.push_back(i); // erase the 6th element myvector.erase(myvector.begin() + 5); // erase the first 3 elements: myvector.erase(myvector.begin(), myvector.begin() + 3); std::cout << "myvector contains:"; for (unsigned i = 0; i<myvector.size(); ++i) std::cout << ' ' << myvector[i]; std::cout << '\n'; //resize myvector.resize(2); std::cout << "my vector size : " << myvector.size() << '\n'; //clear myvector.clear(); std::cout << "my vector size : " << myvector.size() << '\n'; return 0; } | cs |
실행 결과
참조: http://www.cplusplus.com/reference/vector/vector/
참고문헌: 뇌를 자극하는 C++ STL
'컴퓨터공학 > STL' 카테고리의 다른 글
[STL] C++ STL list (0) | 2018.07.19 |
---|---|
[STL] C++ STL deque (0) | 2018.07.19 |
[STL] C++ STL string (0) | 2018.07.19 |
[STL]C++ STL priority_queue (0) | 2018.07.19 |
[STL]C++ STL queue (0) | 2018.07.19 |