less than 1 minute read

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

  • STL 컨테이너 순회를 위한 포인터이다

2.1 begin()

  • STL 컨테이너 혹은 배열의 가장 처음 요소를 가리키는 iterator을 반환한다

2.2 end()

  • STL 컨테이너 혹은 배열의 마지막 요소 다음 요소를 가리키는 iterator을 반환한다.
  • 실제 요소를 가리키지 않는다