본문 바로가기

게임개발 수업

STL vector

vector란 stl에서 제공하는 컨테이너 중 하나로 가변배열이다.

여러 함수를 제공하고, 잘 사용하면 굉장히 편하다.

 

다른 stl 컨테이너를 보면 알겠지만, 다른 컨테이너들도 대부분 똑같은 함수를 가지고 있고, 동작도 같다.

즉 하나의 컨테이너만 쓸줄 안다면, 다른것을 사용하는 것도 굉장히 쉽다.

 

그렇다면 왜 여러가지의 컨테이너가 존재하는 것일까?

컨테이너는 각각의 특징을 가진 ADT(Abstract Data Type)를 DA(Data Structure)로 구현한 것이다.

 

그래서 컨테이너의 특징을 알아야 한다.

vector는 array를 사용해서 구현한 것이다.

때문에 array의 특징을 그대로 가진다.

 

array의 장점 : 인덱스에 임의접근이 가능하다.

array의 단점 : 요소를 삽입 삭제하면 비용이 많이 발생한다.

 

vector는 이와 같은 특징을 그대로 가진다. 이것을 유념하고 함수를 보면 된다.

Modifiers v.insert(iter, m) iter가 가리키는 위치에 m의 값을 삽입한다.
그리고 해당 위치를 가리키는 반복자(iterator)를 반환
v.erase(iter) iter 반복자가 가리키는 원소를 제거한다. capacity는 그대로 유지된다.
v.clear() vector의 모든 원소를 제거한다.
Capacity v.size() 원소의 개수를 반환한다.
v.resize(n) 크기를 n개로 변경한다. 커진 경우에는 빈 곳을 0으로 초기화한다.
v.reserve(n) n개의 원소를 저장할 공간을 예약한다.
capacity() 할당된 공간의 크기를 반환한다. (size()와 다름)
v.shrink_to_fit() capacity의 크기를 vector의 실제 크기에 맞춤
Element
access
v.front() 첫 번째 원소의 참조를 리턴한다.
v.back() 마지막 원소의 참조를 리턴한다.
Iterators v.begin() 첫 번째 원소를 가리키는 반복자(iterator)를 반환한다.
v.end() 마지막 원소 다음을 가리키는 반복자(iterator)를 반환한다.

 

 

 

 

 

 

 

 

 

'게임개발 수업' 카테고리의 다른 글

static 키워드  (0) 2022.11.23
OOP의 특징  (0) 2022.11.16
STL 구성요소  (0) 2022.11.08
스택 프레임, 메모리 누수, 가비지 컬렉션, 메모리 단편화  (1) 2022.10.31
메모리 구조  (0) 2022.10.26