Programming/C++

c++ stl 필요한 컨테이너 정리

fishersheep 2022. 1. 24. 17:23
반응형

벡터(vector)

c++ 표준라이브러리에 있는 컨테이너

동적배열로서 기존 배열과는 다르게 크기 지정을 하지않아도 사용가능하다. 또한 메모리를 효율적으로 관리한다.

"#include<vector>" 헤더파일을 추가

"vector<자료형>변수명" 으로 선언

"변수명.begin()"으로 시작점 주소를 반환   <-> "변수명.rbegin()" 끝나는 지점을 시작점으로 반환

"변수명.end()"으로 끝나는지점+1 주소를 반환   <-> "변수명.rend()"  시작점+1 을 끝나는지점으로 반환

"변수명.front()" 첫번째 요소 반환

"변수명.back()" 마지막 요소 반환

"변수명.erase(인덱스)" 인덱스의 값을 삭제한다

 

큐(queue)

선입선출 자료구조인 큐를 직접구현하지 않고 사용할 수 있다.

"#include<queue>" 헤더파일을 추가

"queue<자료형>변수명" 으로 선언

"변수명.push(값)" 큐에 값을 삽입

"변수명.pop(값)" 큐에 값중 가장 먼저 들어간 값을 삭제한다.

"변수명.front()" 첫번째 요소 반환

"변수명.back()" 마지막 요소 반환

 

셋(set)

저장되는 원소들이 자동으로 오름차순으로 정렬되는 컨테이너로서 조건을 주면 내림차순으로도 정렬할 수 있다.

셋은 유일한 원소를 가지며, 균형이진트리 (높이균형이 맞춰진 이진트리) 로 구현된다. (탐색에 유용하다)

multiset은 set과는 다르게중복을 허용한다. 

"#include<set>" 헤더파일을 추가

"set<자료형>변수명" 으로 선언

"변수명.insert(값)" set에 값을 삽입

"변수명.erase(인덱스)" 인덱스의 값을 삭제한다

"auto 변수명 = set변수명.find(값)" 을 사용하면 원하는 값이 존재하는지 여부를 알 수 있다. 값이 존재할 경우 해당 값을 반환하고, 없을경우에는 반환하지 않는다.

auto 는 c++에서 사용되는 데이터 타입추론으로 알아서 데이터 타입을 지정해준다.

 

맵(map)  *유용하다*

key와 value가 쌍으로 저장되는 컨테이너로서 균형이진트리로 구현된다.

set과 유사하게 중복값을 허용하지 않으며, 자동으로 key를 기준으로 오름차순 정렬한다.

(내림차순도 greater을 사용하여 가능)

빠른검색에 유용하며, 크기가 가변적이다.

"#include<map>" 헤더파일을 추가

"map<자료형,자료형>변수명" 으로선언

"변수명.insert(값)" map에 값을 삽입

"변수명.erase(key)" 특정 key를 삭제한다

이외에도 find(), begin(), end() empty() 등을 사용가능 하다.

 

 

반응형