c++

vector 컨테이너

폭주강아지 2018. 11. 22. 00:53

header파일

#include<vector> 필요


알고리즘 함수사용

#include<algorithm> 헤더 필요


Vector 객체 생성

ex) vector<int> v; // int 타입의 값만 다루는 벡터 객체 생성


// v는 오직 int 타입만 다루므로 다른 타입의 값을 삽입하면 오류가 발생한다.


vector에 원소 삽입

-> vector에 값을 삽입하기 위해서는 push_back() 멤버 함수를 이용한다.

push_back()은 삽입되는 값을 벡터의 맨 마지막에 삽입한다.


ex)  v.push_back(1);

v.push_back(2);

v.push_back(3); // 저장된 원소의 개수는 3이 된다.


vector의 원소 값 읽기 및 변경


at() 멤버 함수를 이용하면 벡터의 원소에 접근할 수 있다.


v.at(2) = 5; // v의 3번째 원소 값을 5로 변경

int n = v.at(1) // v의 두 번째 원소 값을 읽어 n에 저장


벡터를 배열처럼

ex)  v[2] = 5; // 벡터 v의 3번째 원소 값을 5로 변경

int n = v[1]; //벡터 v의 두번째 원소 값을 읽어 n에 저장


[]연산자를 이용하여 다음과 같이 벡터의 모든 원소를 출력할 수 있다.

ex) for(int i=0; i<3; i++)

cout << v[i] << '\n';


벡터의 원소 개수 알아내기

벡터의 존재하는 원소의 개수는 size() 함수를 이용하여 알아낼 수 있다. size()를 이용하면 앞의 for 문을 다음과 같이 변경할수있다.


for(int i=0; i<v.size(); i++)

cout << v[i] << '\n';


벡터의 원소 삭제

벡터에 들어 있는 원소를 개별적으로 삭제하는 멤버 함수로 erase()가 있지만 erase()는 iterator와 함께 사용해야 한다.

vector<int>::iterator it; // it는 정수 벡터의 원소를 가리키는 포인터

it = v.begin(); //it는 벡터 v의 첫 번째 원소를 가리킨다.

it = v.erase(it); //벡터 v에서 첫번째 원소를 삭제한다.


erase(it)는 it가 가리키는 원소를 삭제한 후 , 벡터의 원소들을 다시 앞으로 한자리 씩 이동시킨다. 그리고 삭제된 다음 원소를 가리키는 포인터를 리턴한다. 그러므로 erase(it) 후에는 다음과 같이 반드시 it가 리턴 값으로 치환되어야 한다.

it = v.erase(it); // 삭제 후 erase()의 리턴 값으로 it 재설정


p.488.

STL vector의 멤버 함수와 연산자 함수


push_back(element)  : 벡터의 마지막에 element 추가

at(int index) : index 위치의 원소에 대한 참조 리턴

begin() : 벡터의 첫 번째 원소에 대한 참조 리턴

end() : 벡터의 끝(마지막 원소 다음)을 가리키는 참조 리턴

empty() : 벡터가 비어 있으면 true 리턴

erase(iterator it) : 벡터에서 it가 가리키는 원소 삭제. 삭제 후 자동으로 벡터 조절

insert(iterator it, element)  : 벡터 내 it 위치에 element 삽입

size() : 벡터에 들어있는 원소의 개수 리턴

operator[]() : 지정된 원소에 대한 참조 리턴

operator=() : 이 벡터를 다른 벡터에 치환(복사)