17. STL vector2
by Qerogram* vector erase
- 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 | #include <iostream> #include <vector> using namespace std; int main() { vector<int> vector1; vector1.push_back(10); vector1.push_back(20); vector1.push_back(30); vector1.push_back(40); vector1.push_back(50); int Count = vector1.size(); for(int i = 0; i < Count; ++i) cout << "Vector1 : " << vector1[i] << endl; cout << endl; cout << "erase 테스트1" << endl; vector1.erase(vector1.begin()); Count = vector1.size(); for(int i = 0; i < Count; ++i) cout << "Vector1 : " << vector1[i] << endl; cout << endl; cout << endl << "erase 테스트" << endl; vector<int>::iterator iterPos = vector1.begin(); vector1.erase(iterPos, vector1.end()); if(vector1.empty()) cout << "vector1에 아무 것도 없습니다." << endl; return 0; } | cs |
* 결과
Vector1 : 10
Vector1 : 20
Vector1 : 30
Vector1 : 40
Vector1 : 50
erase 테스트1
Vector1 : 20
Vector1 : 30
Vector1 : 40
Vector1 : 50
erase 테스트
vector1에 아무 것도 없습니다.
* vector assign
- assign은 vecotr를 어떤 특정 데이터로 채울 때 사용한다.
- 특정값으로 채우는 방법과, 다른 vector의 반복자로 지정된 영역에 있는 원소로 채우는 방법이 있다.
- 만약 assign을 사용한 vector에 이미 데이터가있다면 기존의 것은 모두 지우고 채운다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #include <iostream> #include <vector> using namespace std; int main() { vector<int> vector1; vector1.assign(7,4); int Count = vector1.size(); for(int i=0; i < Count; ++i) cout << "Vector 1 : " << vector1[i] << endl; cout << endl; vector<int> vector2; vector2.push_back(10); vector2.push_back(20); vector2.push_back(30); vector1.assign(vector2.begin(), vector2.end()); Count = vector1.size(); for(int i = 0; i < Count; ++i) cout << "Vector 1 : " << vector1[i] << endl; return 0; } | cs |
* 결과
Vector 1 : 4
Vector 1 : 4
Vector 1 : 4
Vector 1 : 4
Vector 1 : 4
Vector 1 : 4
Vector 1 : 4
Vector 1 : 10
Vector 1 : 20
Vector 1 : 30
* vector reserve
- vector는 사용할 메모리 영역을 처음 선언할 때, 정해진 값만큼 할당 후 크기가 넘어서면 2배의 크기로 재할당한다.
- 재할당이 일어나는 것을 피하려면 사용할 크기를 미리 지정해야 되고, 지정할 수 있는 크기는 최소 크기보다는 커야 된다.
1 | vector1.reserve( 10 ); | cs |
* vector swap
- vector1과 vector2가 있을 때, 서로 데이터 맞 바꾸는것이 가능하다.
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 | #include <iostream> #include <vector> using namespace std; int main() { vector<int> vector1; vector1.assign(7,4); vector<int> vector2; vector2.push_back(10); vector2.push_back(20); vector2.push_back(30); int Count = vector1.size(); for(int i=0; i < Count; ++i) cout << "Vector 1 : " << vector1[i] << endl; Count = vector2.size(); for(int i=0; i < Count; ++i) cout << "Vector 2 : " << vector2[i] << endl; cout << endl; vector1.swap(vector2); Count = vector1.size(); for(int i=0; i < Count; ++i) cout << "Vector 1 : " << vector1[i] << endl; Count = vector2.size(); for(int i=0; i < Count; ++i) cout << "Vector 2 : " << vector2[i] << endl; cout << endl; return 0; } | cs |
* 결과
Vector 1 : 4
Vector 1 : 4
Vector 1 : 4
Vector 1 : 4
Vector 1 : 4
Vector 1 : 4
Vector 1 : 4
Vector 2 : 10
Vector 2 : 20
Vector 2 : 30
Vector 1 : 10
Vector 1 : 20
Vector 1 : 30
Vector 2 : 4
Vector 2 : 4
Vector 2 : 4
Vector 2 : 4
Vector 2 : 4
Vector 2 : 4
Vector 2 : 4
* 참고 - Thinking About C++ STL Programming
'코딩 > C&C++' 카테고리의 다른 글
19. STL deque1 (0) | 2017.04.18 |
---|---|
18. STL vector3 (0) | 2017.04.18 |
16. STL vector1 (0) | 2017.04.17 |
15. STL list3 (0) | 2017.04.17 |
14. STL list2 (0) | 2017.04.16 |
블로그의 정보
Data+
Qerogram