본문 바로가기

# C++

[C++] STL 정리

728x90
반응형

C++ STL

Array

고정 길이의 배열

#include <array>
std::array<int, 길이> 변수명 = {초기값};

array.begin()       # 첫 원소, iterator와 사용
array.end()         # 마지막 다음 원소, iterator와 사용
array.rbegin()      # 역순 첫 원소
array.rend()        # 역순 마지막 다음 원소
array.front()       # 첫 값
array.back()        # 마지막 값
array.fill(value)   # 모든 값을 value로
array.swap(array2)  # 길이가 같으면 서로 원소를 바꿈
array.at(n)         # n번째 원소
array.empyt()       # 비어있는지 확인
array.size()        # 배열의 사이즈

Vector

동적 길이 배열

#include <vector>
std::vector<int> vec;

vec.push_back(value)                    # 맨 뒤에 원소 추가
vec.insert(vec.begin(), value)          # 원하는 위치에 삽입
vec.pop_back()                          # 마지막 원소 제거
vec.erase(vec.begin())                  # 원하는 위치 제거
vec.erase(vec.begin()+n, vec.begin()+m) # 원하는 위치 제거
vec.clear()                             # 초기화, 길이 0
vec.resize(n)                           # 길이 n으로 바꿈

vec.size(), vec.empty()
vec.front(), vec.back()
vec.begin(), vec.end()

Stack

Last In First Out

#include <stack>
std::stack<int> st;

st.push(value)  # push value
st.pop()        # Pop value
st.top()        # 상단 원소 값 반환
st.swap(st2)    # 스택 내용을 바꿈, 길이는 상관없음

st.size(), st.empty()

Queue

First In First Out

#include <queue>
std::queue<int> Q;

Q.push( value )     # 맨 뒤에 value 추가
Q.pop()             # 맨 앞 데이터 삭제
Q.front()           # 맨 앞 데이터 값 반환
Q.back()            # 맨 뒤 데이터 값 반환

Q.size(), Q.empty(), Q.swap(q2)

Priority Queue

정렬된 큐

#include <queue>
std::priority_queue<int> pq;

pq.push( value )    # value 추가
pq.pop()            # 제일 큰 값 제거
pq.top()            # 맨 앞 값 반환

Map

중복을 허용하지 않는 Key 와 Value 쌍으로 이루어진 Tree

#include <map>
std::map<int, string> mp;
//key를 기준으로 오름차순 정렬이 된다.

//내림차순으로 하고 싶다면
std::map<int, string, greater<int>> mp;

mp.insert({key, value})     # 원소 추가
mp.erase(key)               # 원소 삭제
mp.clear()                  # 내용을 다 지움 (원소 개수 = 0)
mp.find(key)                # 값 반환
mp.count(key)               # 원소의 개수 
반환 (1 or 0)
mp.begin() mp.end()
mp.empty(), mp.size()

Unordered Map

map보다 더 빠른 탐색

#include <unordered_map>
std::unordered_map<int, int> um;

um.insert({key, value})     # 원소 추가
um.erase()                  # 원소 삭제

um.empty(), um.size()
um.find(key), um.count(key)
um.clear(), um.begin(), um.end()

Multi Map

중복되는 key가 가능한 map

#include <map>
std::multimap<int, int> mmp;

mmp.insert({key, value})    # 원소 삽입
mmp.erase()                 # 원소 삭제

mmp.empty(), mmp.size()
mmp.find(key), mmp.count(key)
mmp.clear(), mmp,begin(), mmp.end()

Algorithm

min_element(vector.begin(), vector.end())
# 범위의 가장 작은 원소 리턴

max_element(vector.begin(), vector.end())
# 범위의 가장 큰 원소 리턴

find(vector.begin(), vector.end(), value)
# 범위에서 value위치 리턴

vector.sort()
# 정렬

binary_search(vector.begin(), vector.end(), value)
# 정렬된 컨테이너의 이진탐색 후 값 존재 T/F 반환
728x90
반응형