共用方式為


容器 (現代 C++)

預設會使用 向量 做為 C++ 的預設執行容器。 這是相當於以其他語言撰寫的 List<T>。

vector<string> v;
v.push_back( "Geddy Lee" );

使用 map (不是 unordered_map) 做為預設關聯的容器。 對變質且多個案例使用 setmultimapmultiset

map<string, string> phone_book;
// ...
phone_book["Alex Lifeson"] = "+1 (416) 555-1212";

需要效能最佳化時,請考慮使用:

  1. 陣列類型,當內嵌很重要 (例如,做為類別成員) 時。

  2. 未排序的組合容器 (unordered_map等):較低每項額外負荷 (主要) 和固定時間搜尋 (可能是主要,有時為次要)。 因為使用不便且邊緣銳利,難以正確且有效率地使用。

  3. 排序的向量。(請參閱: 演算法)。

請勿使用 C 陣列。(舊版 API,使用 f( vec.data(), vec.size() ); )。

如需有關容器的其他文章,請參閱 STL 容器

容器大小

下表顯示 x86 和 x64 平台的容器大小 (以位元組為單位)。(對於這些用途,32 位元 ARM 相當於 x86)。這些表格涵蓋的是發行模式,因為偵錯模式包含耗用空間和時間的檢查機制。不同的資料行分別屬於 Visual C++ 2008 SP1,其中 _SECURE_SCL 預設為 1,以及屬於 Visual C++ 2008 SP1,其中 _SECURE_SCL 手動設定為 0 以得出最高速度。在 Visual Studio 2010、Visual Studio 2012 中的 Visual C++ 和 Visual Studio 2013 中的 Visual C++ 的 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++ 標準程式庫參考