C++ STL

2021. 12. 27. 13:07C++

새로 추가된 STL

1. std::unordered_map (그리고 unordered_multimap) - 정렬안된 맵

std::map은 자동으로 정렬되는 컨테이너다.

-> 요소 삽입/제거가 빈번하면 성능이 저하된다.=>정렬안된 std::unordered_map사용

std::unordered_map은 키와 값의 쌍들을 저장, 키는 중복 불가, 자동으로 정렬되지않음

-> 요소는 해쉬 함수가 생성하는 색인 기반의 버킷들로 구성, 해쉬맵이라고도 함.

std::map

자동 정렬, 이진 탐색 트리, 탐색 시간 : O(logn), 삽입과 제거가 빈번하면 느리다.

std:: unordered_map

자동 정렬X, 해쉬 테이블, 탐색 시간 O(1)-해쉬 충돌 없는 경우, 최악 : O(n), 버킷 때문에 메모리 사용량 증가

 

2. std::unordered_set (그리고 unordered_multiset) 

std::map과 같은 문제다. 이진 탐색 트리 기반

std::unordered_set은 정렬되지않는다. 해쉬 테이블 기반

 

3. std::array

요소 수를 기억하지 않음

처음에 타입과 개수를 가져감 C스타일 배열을 만드는 느낌.

더 나은 방법이 많다.

 

범위 기반 for 반복문

for(<range_declaration>:<range_expression>){...}

for(int score : scores)

scores의 값을 score에 하나 씩 대입하여 반복

- 기존 for반복문을 더 간단하게 쓸 수 있으며, 가독성이 더 높다.

- STL 컨테이너와 C스타일 배열 등에서 작동함.

- auto 키워드 사용 가능하며, 컨테이너/배열을 역순회 할 수 없다.

 

for_each보다 사용하기 좋다.

for_each(scores.begin(),scores.end(),printElement);

-> begin부터 end까지 printElement람다 함수 호출

C++03기반이며, 가독성이 밀림.

-> 범위 기반 for문을 사용하자.

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

이동 생성자 및 이동 대입 연산자  (0) 2022.02.19
C++ 스마트 포인터  (0) 2021.12.28
C++ 새로운 자료형  (0) 2021.12.26
C++ 11/14/17/...의 키워드  (0) 2021.12.24
C++ STL 알고리듬  (0) 2021.12.22