새로 추가된 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 |