STL - vector 컨테이너

vector

시퀸스 컨테이너로 배열과 비슷하지만 동적으로 데이터를 추가할 수 있고, 크기가 자동으로 늘어난다는 장점이 있다.

Vector Member 함수

함수 설명 반환 값
push_back(value) vector 끝에 value 를 넣는다
pop_back() vector 의 마지막 원소를 삭제한다
begin() vector 의 첫번째 원소를 가르키는 iterator를 가져온다 Iterator
end() vector 의 마지막 원소 다음을 가르키는 iterator를 가져온다. Iterator
clear() vector 내 모든 원소를 삭제한다.
size() vector 에 저장된 원소의 개수를 반환한다. int
empty() vector 가 비었는지 확인한다. bool
insert(iterator, value) 해당 iterator가 가르키는 위치에 value를 삽입한다.
insert(iterator, begin, end) 해당 iterator가 가르키는 위치에
특정 iterator 가르키는 begin 에서 end 까지 원소를 삽입한다.
erase(iterator) 해당 iterator가 가르키는 원소를 삭제한다.
반환 값으로 다음 iterator 를 반환한다.
Iterator
erase(begin, end) begin 에서 end 범위까지 원소를 삭제한다.
반환 값으로 삭제한 마지막 원소 다음 iterator를 가져온다.
Iterator
assign(n, value) vector 에 value를 n 개 만큼 할당한다.
이전 값이 있더라도 초기화 되고 재할당된다.
assign(begin, end) vector 값을 특정 iterator 가르키는 begin 에서 end 범위 값으로 할당한다
이전 값이 있더라도 초기화되고 재할당된다.
at(index) index가 가르키는 value를 가져온다.

데이터 삽입 함수

push_back 함수

push_back 함수는 vector 마지막에 원소를 넣어준다.

#include <iostream>
#include <vector>
using namespace std;

int main(void) {
vector<int> v;

v.push_back(1);
v.push_back(2);
v.push_back(3);

for (int a : v) {
cout << a << " ";
}
cout << endl;

return 0;
}
1 2 3

insert 함수

  • vector 의 5번째 위치에 값 50을 삽입한다.
#include <iostream>
#include <vector>
using namespace std;

int main(void) {
vector<int> v;

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

v.insert(v.begin() + 4, 50); // vector 5번째 위치에 50을 넣는다.

for (int a : v) {
cout << a << " ";
}
cout << endl;

return 0;
}
1 2 3 4 50 5 6 7 8 9 10 

insert 함수 - iterator를 이용한 데이터 삽입

#include <iostream>
#include <vector>
using namespace std;

int main(void) {
vector<int> v;
vector<int> v2;

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

for (int i = 0; i < 5; i++) {
v2.push_back(i + 20);
}

v.insert(v.begin() + 5, v2.begin(), v2.end()); // 6번째 위치에 v2 vector 데이터를 삽입한다.

for (int a : v) {
cout << a << " ";
}
cout << endl;

return 0;
}
1 2 3 4 5 20 21 22 23 24 6 7 8 9 10 

데이터 삭제 함수

erase

#include <iostream>
#include <vector>
using namespace std;

int main(void) {
vector<int> v;
vector<int> v2;

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

v.erase(v.begin() + 7); // 8번째 원소를 삭제한다.

for (int a : v) {
cout << a << " ";
}
cout << endl;

return 0;
}
1 2 3 4 5 6 7 9 10 

erase - iterator를 이용한 데이터 삭제

#include <iostream>
#include <vector>
using namespace std;

int main(void) {
vector<int> v;
vector<int> v2;

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

v.erase(v.begin() + 4, v.begin() + 6); // 5번째 원소에서 6번째 원소를 삭제한다.

for (int a : v) {
cout << a << " ";
}
cout << endl;

return 0;
}
1 2 3 4 7 8 9 10 

assign 함수

보통은 다른 자료 구조를 vector 로 변환할 때 많이 사용한다.

#include <iostream>
#include <set>
#include <vector>
using namespace std;

int main(void) {
vector<int> v;
set<int> s;

for (int i = 0; i < 8; i++) {
s.insert(i + 1);
}

// set 에 저장된 데이터를 vector 에 저장한다.
v.assign(s.begin(), s.end());

for (int a : v) {
cout << a << " ";
}
cout << endl;

return 0;
}
1 2 3 4 5 6 7 8 
Share