24. std::array
기존의 배열은 범위를 벗어난 잘못된 메모리 접근이 일어날 수 있다.
하지만 std::array는 기존의 배열을 대체할 수 있는 안전한 배열 타입이다.
vector와 달리 크기가 고정되어 새로운 항목을 추가할 수 없지만 오버헤드가 적다.
27. std::forward_list
기존의 STL은 더블링크드리스트인 std::list만 지원했다.
C++11이 등장하면서 싱글링크드리스트인 std::forward_list가 등장했다.
당연히 std::list보다 메모리를 적게 사용한다.
한 방향으로만 순회가 가능하다.
30. std::unordered_...
std::unordered_set
std::unordered_map
std::unordered_multiset
std::unordered_multimap
위 4가지가 추가되었다.
기존의 set, map, ...등과 다른 점은 자료구조과 해시 테이블로 바뀌었다는 점이다.
기존의 set, map이 O(log n)으로 접근한다면 std::unordered_...은 최소 O(1), 최대 O(n)이 걸린다.
37. shared_ptr
객체의 소유권이 카피가 가능하도록 만들어진 포인터
레퍼런스 카운팅 방식을 사용하고 있다. (Object-C, Cocos2d-x, ...)
특정 포인터를 복사한 shared_ptr 객체가 모두 제거가되면 (레퍼런스 카운트가 0이면) 해당 포인터
를 가르키는 메모리가 free 된다.
38. shared_ptr
reset()은 해당 메모리를 free하겠다는 뜻이다.
p1.reset()을 하더라도 p2는 int(10)을 바라보고 있기 때문에 완전히 해제되지 않는다.
p2.reset()을 해야 레퍼런스 카운트가 0이되어 메모리가 해제된다.