Game Programming/게임 프로그래밍 C++

[C++] 순차 컨테이너와 벡터

Doanie 2022. 9. 16. 16:23

[C++] 순차 컨테이너와 벡터


순차 컨테이너 (Sequence Container)

요소들의 보관 순서를 유지할 수 있도록 해주며 어떤 위치든 삽입, 제거가 가능하지만 성능에 있어서는 각각 다른 특성들을 가진다. 종류는 벡터, 데큐, 리스트 등이 있다.


벡터 (Vector)

#include <vector>
//...
Vector<Data Type> vName;
//Ex
vector<int> vInt;
int a = 5;
vInt.push_back(a);

▹ 원하는 위치에 추가/제거 가능하다.

양방향 반복자를 제공한다. 전/후진으로 요소에 접근 가능하다.

C의 배열과 기능은 비슷하지만 미리 할당할 필요가 없으며, 추가할 수 있는 요소에 제한적이지 않다.

모든 요소를 하나의 큰 블럭에 보관한다.

생성자와 반복자

//생성자
vector<DataType> v; //비어있는 벡터 생성
vector<DataType> v(n); //n개의 요소를 가지는 벡터 생성
vector<DataType> v(n, data); //data형태로 초기화 된 n개의 요소를 가진 벡터 생성
vector<DataType> v2(v); //v형태를 복사한 v2 벡터 생성

//반복자
vector<DataType>::iterator it;
it = v.begin(); //v의 첫번째 요소를 가리키는 반복자
it = v.end(); //v의 마지막 요소를 가리키는 반복자
it = v.rbegin(); //v의 역순차 첫번째 요소를 가리키는 반복자
it = v.rend(); //v의 역순차 마지막 요소를 가리키는 반복자

벡터 함수

vector<DataType> v;
vector<DataType> v1;
//함수
v.assgin(n, m); //m값으로 n개를 가진 요소로 벡터를 초기화한다.
v.at(i); //벡터의 i번째 요소를 참조한다.
v.front(); //벡터의 첫번째 요소를 참조한다.
v.back(); //벡터의 마지막 요소를 참조한다.
v.push_back(a); //마지막 요소에 a값을 넣는다.
v.pop_back(); //마지막 요소를 제거한다.
v.reserve(n); //n개의 요소를 저장할 공간을 예약 할당해둔다.
v.resize(n); //벡터의 크기를 n만큼으로 변경하고 0값으로 초기화한다.
v.size(); //벡터의 사이즈를 리턴한다.
v.max_size(); //벡터가 가질 수 있는 최대 요소의 개수를 리턴한다.
v.capaity(); //벡터의 요소가 할당된 공간의 크기를 리턴한다.
v.swap(v1); //v1벡터와 v벡터를 바꾼다.
v.insert(p, n, x); //p가 가리키는 n개의 x값을 삽입한다.
v.erase(p); //p가 가리키는 원소를 제거한다.
v.empty(); //벡터가 비어있는지 불값으로 나타낸다.
v.clear(); //벡터를 초기화한다.

순차 컨테이너와 벡터에 대해 알아보았다. 벡터는 게임에서도 자주 사용되는데 무기리스트, 플레이 리스트, 지오메트리 꼭지점 리스트 등등 다양한 상황들이 있다.

'Game Programming > 게임 프로그래밍 C++' 카테고리의 다른 글

[C++] 연관 컨테이너, 집합과 맵  (0) 2022.09.19
[C++] 데큐와 리스트  (2) 2022.09.18
[C++] STL  (0) 2022.09.16
[C++] 메모리 할당  (0) 2022.09.12
[C++] 형변환과 템플릿  (0) 2022.09.12