본문 바로가기

ComputerScience/C++

C++ STL sequence container

728x90

1. Standard Template Library 

- C++ internal library이다.

- template으로 구현되어 있다.

- container class (vector, list, stack, queue) 등이 구현되어있다.

- algorithms (sort, search, merge, swap) 등이 구현되어있다.

2. container class

- data type에서 자유로운 object들을 저장하는 collection이다.

- 포인터와 비슷한 iterator를 통해 element들에 접근한다.

- 뿐만아니라 container class에는 sort, search등의 다양한 operation들이 구현되어 있다. 

 

3. sequence container

- 순서대로 data가 저장되는 유형의 container이다. order가 존재하고 순서에 따라 접근하게 된다.

- vector, list, deque

- 위와 같은 member function들로 container에 access, add, remove를 수행한다.

- 그 밖에도 다양한 기능의 member function등이 존재한다.

4. Vector

- vector는 array와 유사하지만 더 편리하고 안전한 관리가 가능하다.

- 가변길이 container이다. 자동으로 연속된 storage를 늘려준다.

- element가 늘어나면 혹은 줄어들면 자동으로 resize를 한다.

- 연속된 공간의 메모리가 잡히기 때문에 index만 알면 access가 O(1)안에 끝난다. (random access O(1))

- size는 벡터에 들어있는 멤버의 수 이다.

- capacity는 할당된 메모리 공간의 크기이다. (allocation)

- capacity가 가득차면 vector가 알아서 다시 capacity를 늘린다. max_size는 최대로 늘어날 수 있는 capactiy의 크기이다.

- 인자로 vector를 넘겨줄때는 &를 사용해서 참조자로 넘겨줘서 불필요한 복사가 일어나지 않도록 하자.

5. Stack  

6. List

- stl에서 제공하는 list는 doubly-linked list로 구현되어있다.

- front, back은 바로 찾지만 중간의 노드들은 traverse를 해야 한다.

- 위치와 관계없이 삽입, 삭제가 매우 빠르다.

- iterator를 사용해 traverse하는 코드이다.

- iterator를 사용한 insert의 예시이다.

- 삽입은 it가 가리키는 노드 "앞에" 수행된다. 삽입이 끝나면 it는 여전히 아까 가리키던 노드를 가리킨다.

7. STL Sequence Container Time Complexity

728x90
반응형

'ComputerScience > C++' 카테고리의 다른 글

C++ STL iterator  (0) 2021.11.24
C++ STL associative container  (0) 2021.11.11
C++ - Template  (0) 2021.11.11
C++ - split 함수  (0) 2021.09.28
C++ - File stream  (0) 2021.09.23