[C++] STL vector

1. STL vector 

: index를 기반으로 한 자료구조이며 배열과 달리 최대 크기가 지정되어있지 않음.


장점
  1. 적은 양의 데이터 처리에 좋음
  2. 가변적인 길이를 가짐
  3. index 기반


단점
  1. 중간에 삽입 및 삭제가 불가능
  2. 데이터를 찾으려면 배열과 같이 처음부터 전부 검색해봐야 함
  3. 많은 양의 데이터 처리에 불리



#include <vector>

vector.size() : vector 크기 반환
vector.resize(s) : vector크기를 s로 바꿔줌
vector.empty() : vector가 비었는지 아닌지 확인

vector.begin() : 맨 앞의 iterator 반환
vector.end() : 맨 뒤의 iterator 반환

vector.front() : 맨 앞의 값 반환
vector.back() : 맨 뒤의 값 반환

vector.push_back(d) : 맨 뒤에 d라는 값을 추가
vector.pop_back() : 맨 뒤의 값 제거
vector.clear() : 모든 원소 제거


1) 벡터 합치기

vector<int> A, B, AB;

AB.reserve(A.size() + B.size());
AB.insert(AB.end(), A.begin(),  A.end());
2) 벡터 붙이기

vector<int> A, B;

A.reserve(A.size() + B.size());
A.insert(a.end(), B.begin(), B.end());
3) 특정 값 제거

#include <algorithm>

vector<int> A;
A.erase(remove_if(A.begin(), A.end(), CoditionalFunction), A.end());
4) 중복 값 제거

#include <algorithm>

vector<int> A;
sort(A.begin(), A.end());
A.erase(unique(A.begin(), A.end()), A.end());
A를 정렬하지 않고 unique를 하면 아무런 변화가 없다. 즉, sort를 해서 중복값들을 모아주고 unique로 중복값들을 뒤로 보내주고, erase로 뒤로 보내준 중복된 쓰레기값을 다 지워주는 식이다. 참고로 sort도 algorithm에 있다.

5) 순서 뒤바꾸기

vector<int> A;
reverse(A.begin(), A.end());




++
위에서 설명했듯이 sort는 <algorithm>에 존재한다. 사용법은 배열을 예로 들어서


#include <algorithm>

int Buffer[10]; 

sort(Buffer, Buffer + 10);

벡터도 sort가 가능하다.

vector<int> v;

sort(v.begin(), v.end());

댓글