Notice
Recent Posts
Recent Comments
Link
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

승쨩개발공부

[STL] 컨테이너 종류 본문

STL

[STL] 컨테이너 종류

Unknowns 2021. 12. 7. 17:56

vector

동적 배열을 기반으로하는 컨테이너

동적 배열 기반이므로 인덱스 접근이 가능하다 (탐색이 좋다)

원소를 삽입할 경우 앞에서는 할 수 없으며, 뒤에서부터 삽입해 나간다.

중간 삽입 및 삭제 시에는 삽입공간의 확보, 삭제 공간의 활용을 위해

해당 인덱스 이후 모든 원소들을 포인터 이동해야한다. (선형 시간)

단, 맨 끝에서 삽입 및 삭제 시에는 확보 및 활용할 필요가 없다. (상수 시간)

동적 배열이므로 배열의 크기를 넘어서는 삽입의 시도가 있을 경우

배열의 재할당 및 복사가 발생한다.

또한 원소를 삭제한다 하여도 배열의 크기는 줄어들지 않는다.

 

-> 삽입 및 삭제 불리

-> 탐색이 용이

 

 

list

노드를 기반으로하는 컨테이너

더블 링크드 리스트로 구현이되어있다.

각 노드는 연속적인 메모리에 나열된 것이 아니라

메모리 여기 저기 나열되어 있지만 포인터로 각 노드를 연결하여

마치 연속된 메모리에 나열된 것처럼 보인다.

-> 인덱스 접근이 불가능하다.

원하는 원소를 탐색하기 위해서는 순차적으로 순회하여 원하는 원소를 찾아야한다.

-> 탐색이 불리하다.

중간 삽입 및 삭제 시에는 단순히 연결되어 있는 포인터의 해제 및 재 연결만 하면 되므로

연속된 메모리를 사용하는 vector보다 삽입 및 삭제가 유리하다.

또한, 한정적인 메모리를 사용하지 않기 떄문에 런타임 중 사용자가 원할떄

계속해서 노드를 추가해나갈 수 있다.

 

-> 삽입 및 삭제 용이

-> 탐색이 불리

 

 

map

map의 원소들은 key와 value한 쌍을 이룬다.

각 원소들은 삽입 시에 key값에 따라 자동 정렬이 된다.

정렬이 되기 떄문에 반복자를 통한 순회가 가능하다.

노드 기반 컨테이너들 중 유일하게 key값으로 임의 접근이 가능하다.

리소스 탐색 용으로 많이 쓰인다.

중복 key값은 허용하지 않는다

 

 

 

 

 

 

'STL' 카테고리의 다른 글

[STL] vector의 메모리정책, 생성자, reserve  (0) 2021.12.08
[STL] 조건자 (algorithm)  (0) 2021.12.08
[STL] 반복자 (iterator)  (0) 2021.12.08
[STL] vector  (0) 2021.12.08
[STL] STL이란?  (0) 2021.12.07