본문 바로가기
언어 공부/C++

[C++] 표준 템플릿 라이브러리 (STL) : 컨테이너 (vector, map)

by 희조당 2021. 7. 1.
728x90
표준 템플릿 라이브러리(STL)란?
 템플릿으로 작성된 많은 제네릭 클래스와 함수 라이브러리!

 

 STL에 포함된 제네릭 클래스와 함수들은 "컨테이너", "iterator", "알고리즘" 3가지로 분류된다.

컨테이너는 자료 구조를 구현한 클래스로 맵(map), 셋(set), 벡터(vector), 리스트(list) 등이 있다.

이번 글은 벡터와 맵에 대해서 정리한다!


< Vector : 크기가 가변적으로 변하는 배열 >

 속도적인 측면에선 배열보다 떨어지지만 메모리 관리에 있어서는 아주 효율적이다!

벡터는 size와 capacity가 따로 존재한다!

이유는 새로운 원소가 들어올 때마다 새로운 공간을 할당하면 비효율적이기 때문이다. 그렇기에 벡터는 새로운 원소가 들어오면 추가적인 메모리 공간을 할당한다. (이전 공간의 반만큼 추가로 늘림) 

기본 선언 : vector<data tpye> [name]; 

 

주요 함수

 push_back(element)  맨 뒤에 element 추가
 insert(idx, element)  idx 위치에 element를 삽입
 pop_back(element)  맨 뒤의 element 제거
 erase(idx) // erase(begin, end)  idx 위치의 element를 제거 // 
 begin 위치부터 end 위치까지 제거
 begin()  첫 번째 원소를 가르킴
 end()  마지막 원소의 다음을 가르킴
 size()  원소의 개수를 리턴
 capacity()  할당된 메모리 크기를 리턴

다양한 함수들을 제공하지만 가장 많이 쓰이고 가장 중요한 것들 위주로만 정리하였다.

vector 클래스에는 [ ] 연산자가 작성되어 있기 때문에 배열처럼 사용하면 된다!


< Map : 키와 값을 저장하는 이진 트리 >

 키와 값의 쌍을 원소로 저장하고 키를 이용해서 값을 검색하는 컨테이너

고유한 값을 가져야하고 삽입되면 자동으로 정렬이 된다! (key값을 기준으로 정렬)

기본 선언 : map<data tpye1, data tpye2> [name];  (key = type1, value = type2)

 

 주요 함수

 insert(pair<> element)  '키'와 '값'으로 구성된 pair element 추가
 erase(key) // erase(begin, end)  key의 element를 제거 // 
 begin 위치부터 end 위치까지 제거
 find(key)  key를 가르키는 iterator를 리턴
 count(key)  key의 갯수를 반환 (0 아니면 1)
 begin()  첫 번째 원소를 가르킴
 end()  마지막 원소의 다음을 가르킴
 size()  원소의 개수를 리턴
 empty()  비어있다면 true 리턴

 vector와 마찬가지로 중요한 것 위주로만 정리하였다.

 

STL은 사용자의 부담을 덜어주기 위해 설계되어 지원하는 모든 컨테이너들은 스스로 크기를 조절한다!

댓글