본문 바로가기
알고리즘/기본

[C++/STL] 벡터(Vector)

by E145 2020. 6. 7.
반응형

 

 

벡터(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

댓글