Data+

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

활동하기