-
vector 컨테이너c++ 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=() : 이 벡터를 다른 벡터에 치환(복사)
'c++' 카테고리의 다른 글
한 줄을 읽고자 할 때 get()과 getline() 중 어떤 것이 좋은가? (0) 2018.11.22 std::sort() (0) 2018.11.22 문자열 다루기 (0) 2018.11.19 cin 과 >>의 허점과 해결방법 (0) 2018.11.07 cin과 >>로 키 입력받기 (0) 2018.11.02