본문 바로가기
Dev/C++

Vector 함수정리 C++

by HenryNoh 2020. 11. 11.

<Vector 함수>

- c++의 STL (standard template library)에 존재하는 vector함수는 c언어의 동적할당과 비슷한 개념이다.

- c언어처럼 사용자가 직접 동적할당을 해주며 사용할 필요없이 vector는 알아서 할당된다.

  • Vector 선언
#include <vector>

 

  • Vector assign (vector 할당)
vector<int> v;		//비어있는 vector 생성
vector<int> v(n);	//0으로 초기화되는 n개의 원소를 가지는 vector 생성
vector<int> v(n,m);	//m으로 초기화되는 n개의 원소를 가지는 vector 생성
vector<int> v2(v1);	//v1을 복사하여 v2를 생성

 

  • Vector Element (vector 요소 추가, 삭제)

- v.push_back(i) : vector 제일 뒤에 i 추가
- v.pop_back() : vector 제일 뒤 요소 삭제

vector<int> v;
v.push_back(1);	//1
v.push_back(2);	//1 2
v.pop_back();	//1

 

  • Vector access (vector 접근)

- v.at(n) : 범위를 점검하며 n번째 요소를 참조
- v[n] : 범위를 점검하지 않으며 n번째 요소를 참조
- v.front() : 첫번째 요소를 참조
- v.back() : 마지막 요소를 참조

vector<int> v;

for (int i = 0; i < 28; i++) {
    v.push_back(i + 1);
}

cout << v.at(17) << endl;	//18
cout << v[15] << endl;		//16
cout << v.front() << endl;	//1
cout << v.back() << endl;	//28

 

  • Vector Iterator (vector 반복자)

- v.begin() : vector의 첫번째 주소값 반환
- v.end() : vector의 마지막+1 주소값 반환

vector<int> v;

vector<int>::iterator iter;
for (int i = 0; i < 28; i++) {
    v.push_back(i + 1);
}

for (iter = v.begin(); iter < v.end(); iter++) {
    cout << *iter << endl;
}

//1~28 까지 출력

 

  • Vector capacity (vector 용량)

- v.empty() : vector가 비어있는지 판단해서 bool로 반환
- v.size() : vector에 들어가 있는 인자의 길이(개수)를 파악
- v.capacity() : vector에 할당된 총 용량의 길이를 파악
- v.resize() : vector의 인자의 길이를 재조정
# capacity가 resize후의 용량보다 작았을경우 capacity도 resize만큼 용량 조정
# size의 크기가 resize후의 크기보다 클 경우 index 참조 에러 발생

vector<int> v;

cout << v.empty();	//1

for (int i = 0; i < 28; i++) {
  v.push_back(i + 1);
  cout << v[i] << " " << v.size() << " " << v.capacity() << endl;
}

v.resize(29);

cout << v.size() << " " << v.capacity() << endl;

cout << v.empty();	//0

 

  • Vector function (vector 함수)

- v.clear() : vector 비워주기 (size만 줄어들고 capacity는 그대로)
- v1.swap(v2) : vector1과 vector2를 교환 (size와 capacity 모두 교환)
- v.insert(iter,m) : iterator위치에 m을 삽입 (나머지는 뒤로 밀림)
- v.insert(iter,n,m) : iterator위치부터 m을 n개 삽입 (나머지는 뒤로 밀림)
- v.erase(iter) : iterator위치의 원소를 삭제 (size는 줄어듬, capacity는 그대로)
- v.eraser(iter1,tier2) : iterator1 부터 iterator2까지 원소를 삭제 (size는 줄어듬, capacity는 그대로)

vector<int> v;

cout << v.size() << v.capacity() << endl;	//0 0

for (int i = 0; i < 28; i++) {
    v.push_back(i + 1);
}

v.insert(v.begin(), 3, 4);		// 4 4 4 1 2 3 4 ~
v.insert(v.begin(), 4);			// 4 4 4 4 1 2 3 ~

v.erase(v.begin());			// 4 4 4 1 2 3 4 ~
v.erase(v.being(), v.begin()+3);	// 1 2 3 4 ~
v.erase(v.begin(), v.end());		// 전체 삭제

cout << v.size() << v.capacity() << endl;	//0 42

'Dev > C++' 카테고리의 다른 글

Map 함수정리 C++  (0) 2021.04.07
String 함수정리 C++  (0) 2020.11.05

댓글