본문 바로가기
CS/Algorithm

Vector

by keyBomb 2021. 7. 2.

- 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

댓글