다음을 통해 공유


컨테이너(최신 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";

성능 최적화가 필요하면 다음을 사용합니다.

  1. 배열 형식을 포함하는 경우 예를 들면 클래스 멤버처럼 중요합니다.

  2. 순서 없이 연관된 컨테이너 (unordered_map, et al) : (주요한)요소별 오버 헤드와 (잠재적으로 주요하며 가끔씩 중요하지 않은)상한수 시간 조회 를 낮춥니다.된 날카로운 가장자리와 불편함 때문에 정확하고 효율적으로 사용하기 어렵습니다.

  3. 정렬된 벡터입니다. (참조: 알고리즘)

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

참고 항목

기타 리소스

C++의 진화(최신 C++)

C++ 언어 참조

C++ 표준 라이브러리 참조