본문 바로가기
C++, MFC

[C++/STL] Array, Vector, List, Map 차이

by mutex 2024. 8. 13.

STL이란?

 

자료구조 클래스이며 반복자, 알고리즘 간 협력이 기반한 템플릿 라이브러리

 


 

Array (배열)

 

스택에 데이터를 저장

 

사용법 : 

 

자료형 변수명 [ 스택의 크기 ] 

 

ex)  int arr[5] = { 0 , };

// 자료형 변수명 [ 스택의 크기 ] 

int arr[5] = { 0 , };

 

장점 : 

 

자료를 순차적으로 저장하고 인덱스의 번호로 데이터에 접근이 가능.

 

자료에 접근하기가 용이하고 속도도 빠름.

 

단점 :

배열의 크기를 미리 지정하기 때문에 사용하지 않는 메모리가 낭비 될 수 있음.

 

중간 값을 삭제하거나 삽입이 쉽지 않음.

 


 

vector (벡터)

 

동적 배열로 저장

 

연속적 메모리 

 

요소를 추가할때마다 메모리 재할당 가능.

 

사용법 : 

// vector<자료형> 변수명

vector<int> vec;

 

장점 :

동적으로 배열을 사용하기 떄문에 메모리를 낭비하지 않음.

 

데이터의 위치를 알고 있다면 접근이 편함.

 

랜덤하게 vector 요소에 접근 가능.

 

단점 :

데이터가 순차적으로 저장되기 때문에 검색속도가 배열에 비해 느림.

 

 

 


 

list (리스트)

 

자료구조가 연결 리스트로 되어있음.

 

비연속적 메모리 

 

요소를 추가할때마다 메모리 재할당할 필요 없음.

 

사용법 :

 

//std::list<자료형> 변수명

std::list<int> myList

 

장점 :

 

길이가 가변적임.

 

컨테이너 위치에서의 삽입/제거가 빠름

 

데이터들의 컨테이너 내 이동이 빠름

 

 

단점 : 

 

데이터가 순차적으로 저장되기 때문에 검색속도가 배열에 비해 느림.

 

데이터에 접근할때 랜덤접근이 불가능하고 순차 접근만 가능하다.

 


 

map (맵)

 

트리구조로 되어있음.

 

Key와 Value가 Pair.

 

key를 기준으로 오름차순 정렬을 자동으로 수행

 

사용법 :

 

//std::map<key, value> 변수명

ex) std::map<string, int> myMap

 

장점 : 

 

데이터의 양이 많을 때 Key값을 이용한 검색이 빠르다.

 

단점 : 

 

데이터를 자동으로 정렬하기 때무에 데이터를 삽입하거나 삭제할 때  추가 작업 필요.

 

즉, 삽입 삭제 연산이 느림.

 

 

'C++, MFC' 카테고리의 다른 글

[C++, MFC] SNMP 서비스  (1) 2024.08.27
[C++] template 함수  (0) 2024.08.13
[C++,MFC] std::string <--> CString  (0) 2024.07.31
[C++] Pointer <포인터>  (0) 2024.07.29
[MFC] CString 문자열 비교 Compare()  (0) 2024.07.23