1. std::vector<type>
- 동적배열이다: 배열과 흡사하지만 크기가 자동으로 조절된다.
- 장점(배열의 장점이기도 하다) :
- 임의접근 : 인덱스를 사용해서 O(1) 시간복잡도로 원소에 접근이 가능하다.
- 배열의 단점(배열의 단점이기도 하다):
- 중간에 원소를 삽입, 삭제할때 비용이(시간복잡도 O(n)) 많이 든다.
1.1 std::vector<type>.push_back(type)
- 맨 뒤에 요소 삽입한다
- 단점 : 만들어진 용량(capacity)을 초과해서 넣을 경우에는 재할당 및 복사가 발생한다.
- 가장 처음에 capacity 0개, 이후에 요소가 추가될때 capacity가 모자라다면 메모리를 추가로 할당받아 capacity가 늘어난다
- 용량이 커지면 메모리 연속된 공간을 찾기 위해 시간이 걸릴수도 있다.
1.2 std::vector<type>.reserve(size_t NewCapacity)
- NewCapacity만큼 미리 메모리를 할당받아 놓는다.
1.3 std::vector<type>.resize(const SizeType newSize)
- 초기화 되지 않은 원소 newSize개가 저장된다.
1.4 std::vector<type>.clear()
- 원소는 제거를 다 해준다
- capacity는 유지된다
1.5 std::vector<type>.back()
2. iterator
2.1 begin()
- STL 컨테이너 혹은 배열의 가장 처음 요소를 가리키는 iterator을 반환한다
2.2 end()
- STL 컨테이너 혹은 배열의 마지막 요소 다음 요소를 가리키는 iterator을 반환한다.
- 실제 요소를 가리키지 않는다