본문 바로가기

programming/C++

[C++] STL Container 특징 과 String class

반응형
SMALL

STL(Standard Template Librate ) 란 ? 

C++ 템플릿을 이용한 표준으로 정리된 라이브러리로 구성요소로 반복자, 컨테이너, 알고리즘을 3가지 구성요소로 가지고있다.

 

** string 은 c++ 표준라이브러리로 STL에 포함되지 않음 . 

 

STL구성요소 

1. 반복자  :  STL 컨테이너에 저장된 원소들을 가리키는 포인터 

 

2. 컨테이너 : 데이터를 저장하고 관리하기 위한 클래스 ( Vector, list, Map, Deque 등 ) 

 

3. 알고리즘 : STL에서 제공하는 함수 ( 정렬 , 검색 등 ) 

 

 

컨테이너 Container  ( 명사 : 그릇 ) 

컨테이너는 데이터를 저장하고 관리하기 위한 클래스.

- 뜻 그대로 그릇으로 무언가 담을 수 있는 역할을 하므로 , 자료 및 데이터의 값을 저장하는 역할을 하는것.

 

컨테이너 종류 

컨테이너 종류로 순차 컨테이너, 연관 컨테이너 , 어댑터 컨테이너로 세가지 종류가 있다 . 

 

1. 순차 컨테이너 ( 시퀀스 컨테이너 ) ( 선형성 )

임의의 위치에 데이터 삽입 및 삭제가 가능하며 데이터를 순차적으로 저장한다 .

일반적인 자료구조와 동일한 형태이며 자료를 입력한 순서대로 저장하기 때문에 저장, 검색, 탐색 알고리즘에 시간이 많이 걸리는 단점이 있다 ( 순차적으로 접근하기 때문이다 ) 

많지 않은 자료 검색 및 속도가 중요하지 않을때 사용하게 된다 .

 

Vector ( 가변배열 ) , List ( 연결 리스트 ) , Deque( 덱 ) 등 ,...이 이에 속한다.

Vector는 동적 배열 처럼 동작하며 자료는 뒤에서 추가된다.

List 벡터와 유사하지만 중간에서 자료를 추가하는 연산이 효율적이다.

Deque 벡터와 유사하지만 앞에서도 자료들이 추가될 수 있다.

 

2. 연관 컨테이너 ( 비선형성 )

일정 규칙에 따라 자료를 조직화하여 저장하고 자료를 정렬 /해시 등 이용하여 저장하기 때문에 검색에 유리하며 

많은 양의 자료를 빠르게 검색 및 처리할때 유용하게 사용된다. 

Set, Map, Multiset, Multimap 등이 이에 속하게 된다.

Set는 집합으로 중복 없이 자료들이 정렬되어 저장된다.

Map은 key-value 형태로 자료가 저장된다,

MultiSet은 다중 집합으로 집합과 유사하지만 자료의 중복을 허용한다.

Multimap은 다중 맵으로 맵과 유사하지만 키가 중복될 수 있다.

3. 어댑터 컨테이너

데이터를 미리 정해진 방식에 따라 관리하며 순차 컨테이너를 변형하여 스택 큐 우선순위 큐 형태로 데이터를 저장한다.

LIFO(stack) , FIFO(queue), Priority queue등이 이에 속하게 된다.

** string 은 c++ 표준라이브러리로 STL에 포함되지 않음 .

 

** 데이터 저장 방식에 따라 두가지 형식으로 나눌수 있다.

 

1. 배열 기반 컨테이너 : vector , deque

2. 노드 기반 컨테이너 : list, set, multiset, map, multimap


- 자료구조 개념 과 특징 

구조 이름 장점 단점
array 배열 적은 양의 자료에 유리 크기 변경불가
vector 가변배열 적은 양의 자료에 유리,
크기변경가능 , 
순차 접근 가능,
랜덤 액세스 가능 
중간삽입삭제,
검색 느림,
많은 양의 자료 불리함
queue FIFO( priority_queue)    
deque 덱(앞뒤로 넣고 뺴는 큐 )     
list 양방향 연결 리스트 중간 삽입 / 삭제 가능 , 
크기 변경가능 
적은 양의 자료에 유리
순차접근가능
많은 양의 자료에 불리,
랜덤 액세스 불가
검색 느림
forward_list 단방향 연결 리스트 list 와 동일 list와 동일 
stack LIFO     
map 이진탐트리 기반 
key-value 로구성 , 
자동정렬
대용량 자료처리 유용함,
검색 속도 빠름 
key/value 따로 저장,
자동정렬가능
데이터가 적으면 오버헤드가 발생할수 있음
set 이진탐색 트리 기반,
자동정렬, 
key만저장함
많은 양의 자료에 유리하며 ,
검색 속도가 빠르다, 
key가 곧 value이고 자동정렬 기능이 있다
적은 데이터에 오버헤드가 발생할 수 있다.

unordered_map 정렬되지 않은 map    
unordered_set 정렬 되지않은 set    

 


String 

: String 은 c++ 표준 라이브러리로 STL에 포함되지 않는다.

String은 문자만 원소로 저장하고 문자열을 조작할 목적으로 사용되는 컨테이너이다.

 

String 을 사용하기 위해서는 <string>헤더를 인클루드 해야 한다 . 

 

반응형
LIST

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

[C++] STL MAP 정리  (0) 2022.03.29
[c++] STL Queue , Stack 정리  (0) 2022.03.29
[C++] STL - Vector 정리  (0) 2021.12.27
[C++] STL - Array 정리  (0) 2021.12.27
[C++] String class  (0) 2021.12.24