- vector 는 자동으로 메모리가 할당되는 배열 이라고 생각하면 편하다.
또한 다른 STL들과 마찬가지로 template을 사용하기 때문에 데이터 타입은 자유롭게 사용가능하다.
중간에 값을 삽입할 수 있지만 결국 배열기반이므로 삽입과 삭제가 자주 일어난다면 비효율적이다.
- vector를 사용하기 위해서는 <vector> 헤더파일을 추가해야한다.
vector<int> v; // 이런식으로 선언한다.
- 생성자
vector<int> v; : // 비어있는 vector v 생성
vector<int> v(5); // 0으로 초기화된 5개의 원소를 가지는 vector v 생성
vector<int> v(5,1); // 1로 초기화된 5개의 원소를 가지는 vector v 생성
vector<int> v1 = v2; // 기존의 vector v2를 복사해서 생성
* 연산자 ==, !=, >, < 로 대소비교가능!
- 멤버함수
vector<int> v;
- v.front(); // 첫번째 원소 참조
- v.back(); // 마지막 원소 참조
- v.clear(); // 모든 원소 제거. 메모리는 남아있음. size는 줄고 capacity는 그대로.
- v.push_back(4); // 마지막 원소 뒤에 4 삽입
- v.pop_back(); // 마지막 원소 제거
- v.assign(4,2); // 2를 4개 할당
- v.begin(); // 첫번째 원소 가리킴. (iterator와 사용)
- v.end(); // 마지막의 '다음'을 가리킴. (iterator와 사용)
- v.rbegin(); // reverse begin. (iterator와 사용)
- v.rend(); // reverse end. (iterator와 사용)
- v.resize(n); // 크기를 n으로 변경. 커졌을 경우 default 0으로 초기화.
- v.resize(n,3); // 크기를 n으로 변경. 커진 경우 3으로 초기화
- v.size(); // 원소의 개수 반환
- v.capacity(); // 할당된 공간의 크기를 반환
- v.empty(); // 비어있으면 true (기준은 size == 0)
- v.swap(v1); // v와 v1의 원소와 capacity를 바꿈. vector의 capacity를 프로그램이 끝나기 전에 반환하고 싶을 때도 사용. vector<int>.swap(v);
- v.insert(1,2,3); // 1의 위치에 2개의 3을 삽입
- v.insert(1,2); // 1의 위치에 2를 삽입
- v.erase(iter); // iter가 가리키는 원소 삭제. size는 줄고 capacity는 그대로.
'CS > Algorithm' 카테고리의 다른 글
| Priority Queue (0) | 2021.07.02 |
|---|---|
| BFS / DFS (Binary Tree) (0) | 2021.07.02 |
| Set (0) | 2021.07.02 |
| Map (0) | 2021.07.02 |
댓글