컨테이너(최신 C++)
기본적으로 C++에서 기본 순차 컨테이너로서의 벡터를 사용합니다. 이것은 다른 언어에서의 List<T>와 동일합니다.
vector<string> v;
v.push_back( "Geddy Lee" );
기본 연관 컨테이너로 맵(unordered_map이 아님)을 사용합니다. 디제너레이트 및 다중 사례에 대해 set, multimap, multiset를 사용합니다.
map<string, string> phone_book;
// ...
phone_book["Alex Lifeson"] = "+1 (416) 555-1212";
성능 최적화가 필요하면 다음을 사용합니다.
배열 형식을 포함하는 경우 예를 들면 클래스 멤버처럼 중요합니다.
순서 없이 연관된 컨테이너 (unordered_map, et al) : (주요한)요소별 오버 헤드와 (잠재적으로 주요하며 가끔씩 중요하지 않은)상한수 시간 조회 를 낮춥니다.된 날카로운 가장자리와 불편함 때문에 정확하고 효율적으로 사용하기 어렵습니다.
정렬된 벡터입니다. (참조: 알고리즘)
C 배열을 사용하지 마십시오. (이전 API의 경우 f( vec.data(), vec.size() );를 사용합니다.)
컨테이너에 대한 다른 문서를 보려면 STL 컨테이너 를 참조하십시오.
컨테이너 크기
다음 표에는 x86 및 x64 플랫폼의 컨테이너 크기(바이트 단위)를 보여줍니다. (이러한 목적에서 32비트 ARM은 x86과 같습니다.) 디버그 모드에는 공간과 시간을 사용하는 검사 시스템이 포함되어 있기 때문에 이러한 표는 릴리스 모드를 설명합니다. 별도 열은 Visual C++ 2008 SP1용이며, 여기서 _SECURE_SCL은 기본적으로 1로 설정되며, _SECURE_SCL의 Visual C++ 2008 SP1에 대해서는 최대 속도를 위해 0으로 수동으로 설정합니다. Visual Studio 2010의 Visual C++, Visual Studio 2012의 Visual C++ 및 Visual Studio 2013의 Visual C++ 기본 _SECURE_SCL 0(현재 _ITERATOR_DEBUG_LEVEL).
x86 컨테이너 크기(바이트) |
VC9 SP1 |
VC9 SP1 SCL=0 |
VC10 |
VC11 |
---|---|---|---|---|
vector<int> |
24 |
16 |
16 |
12 |
array<int, 5> |
20 |
20 |
20 |
20 |
deque<int> |
32 |
32 |
24 |
20 |
forward_list<int> |
N/A |
N/A |
8 |
4 |
list<int> |
28 |
12 |
12 |
8 |
priority_queue<int> |
28 |
20 |
20 |
16 |
queue<int> |
32 |
32 |
24 |
20 |
stack<int> |
32 |
32 |
24 |
20 |
pair<int, int> |
8 |
8 |
8 |
8 |
tuple<int, int, int> |
16 |
16 |
16 |
12 |
map<int, int> |
32 |
12 |
16 |
8 |
multimap<int, int> |
32 |
12 |
16 |
8 |
set<int> |
32 |
12 |
16 |
8 |
multiset<int> |
32 |
12 |
16 |
8 |
hash_map<int, int> |
72 |
44 |
44 |
32 |
hash_multimap<int, int> |
72 |
44 |
44 |
32 |
hash_set<int> |
72 |
44 |
44 |
32 |
hash_multiset<int> |
72 |
44 |
44 |
32 |
unordered_map<int, int> |
72 |
44 |
44 |
32 |
unordered_multimap<int, int> |
72 |
44 |
44 |
32 |
unordered_set<int> |
72 |
44 |
44 |
32 |
unordered_multiset<int> |
72 |
44 |
44 |
32 |
string |
28 |
28 |
28 |
24 |
wstring |
28 |
28 |
28 |
24 |
x64 컨테이너 크기(바이트) |
VC9 SP1 |
VC9 SP1 SCL=0 |
VC10 |
VC11 |
---|---|---|---|---|
vector<int> |
48 |
32 |
32 |
24 |
array<int, 5> |
20 |
20 |
20 |
20 |
deque<int> |
64 |
64 |
48 |
40 |
forward_list<int> |
N/A |
N/A |
16 |
8 |
list<int> |
56 |
24 |
24 |
16 |
priority_queue<int> |
56 |
40 |
40 |
32 |
queue<int> |
64 |
64 |
48 |
40 |
stack<int> |
64 |
64 |
48 |
40 |
pair<int, int> |
8 |
8 |
8 |
8 |
tuple<int, int, int> |
16 |
16 |
16 |
12 |
map<int, int> |
64 |
24 |
32 |
16 |
multimap<int, int> |
64 |
24 |
32 |
16 |
set<int> |
64 |
24 |
32 |
16 |
multiset<int> |
64 |
24 |
32 |
16 |
hash_map<int, int> |
144 |
88 |
88 |
64 |
hash_multimap<int, int> |
144 |
88 |
88 |
64 |
hash_set<int> |
144 |
88 |
88 |
64 |
hash_multiset<int> |
144 |
88 |
88 |
64 |
unordered_map<int, int> |
144 |
88 |
88 |
64 |
unordered_multimap<int, int> |
144 |
88 |
88 |
64 |
unordered_set<int> |
144 |
88 |
88 |
64 |
unordered_multiset<int> |
144 |
88 |
88 |
64 |
string |
40 |
40 |
40 |
32 |
wstring |
40 |
40 |
40 |
32 |