반응형
벡터(Vector)란?
- 크기가 정해지지 않은 배열이다.
- 원소 추가, 제거 시 자동으로 크기가 변경된다.
- 임의의 위치에 있는 원소 접근과 뒤에 원소를 추가는 O(1)를 보장한다.
벡터 사용 방법
- 벡터 선언
#include <vector> // 헤더 선언 필요
vector<int> v; // int 자료형을 저장하는 벡터 선언
- 초기화
// 벡터의 초기 크기를 n으로 설정.
vector<int> v(n);
// 벡터의 초기 크기를 n으로 설정하고, 모두 p로 초기화
vector<int> v(n,p);
// nxm 크기의 벡터를 선언하고, 모두 p로 초기화
vector<vector<int>> v(n,vector<m,p>);
- 반복자
// 벡터의 "첫 원소"의 "주소"
v.begin();
// 벡터의 "마지막 원소"의 "다음 주소"
v.end();
- 반복자 활용
int num;
for(auto iter = v.begin(); iter != v.end(); iter++)
{
num += *iter;
}
- 원소 추가
// 벡터의 맨 뒤에 원소 추가
v.push_back(5);
- 원소 제거
// 마지막 원소 제거
v.pop_back();
// 모든 원소 제거
v.clear();
// i번째 원소 제거
v.erase(v.begin()+i);
- 원소 조회
// i번째 원소 반환
v[i];
v.at(i); // v.at(i)이 v[i] 보다 더 느리다. 그러므로 v[i]를 사용하자.
// 첫 번째 원소 반환
v.front();
// 마지막 원소 반환
v.back();
// 벡터의 크기 출력
v.size();
- 벡터 복사
// 벡터 vDest에 벡터 v를 복사하여 저장
vector<int> vDest(v);
// 벡터 vDest에 벡터 v의 i번째 원소부터 끝까지 복사하여 저장
vector<int> vDest = vector<int>(v.being()+i, v.end);
// 벡터에서 "=" 연산자는 Deep Copy로 작동한다.
vector<int> vDest;
vDest=v;
- 기타
// 벡터에 원소가 있는지 확인. 원소가 있는 경우 true, 없는 경우 false 반환
v.empty();
// 벡터의 크기 재조정.
v.resize(n);
- 벡터 순차 접근
int result=0;
// 벡터를 순차접근하여 합을 구하는 경우
for(auto n : v)
{
result+=n;
}
반응형
'알고리즘 > 기본' 카테고리의 다른 글
[C++/STL] 페어(Pair) (0) | 2020.06.07 |
---|---|
[C++/STL] 덱(Deque) (0) | 2020.06.07 |
[C++/STL] 큐(Queue), 우선순위 큐(Priority Queue) (0) | 2020.06.07 |
[C++/STL] 스택(Stack) (0) | 2020.06.07 |
[C++/STL] 알고리즘을 위한 팁(21.02.16 수정) (0) | 2020.06.07 |
댓글