2010-01-18 100 views
17

ISO C++標準是否要求STL容器內的任何對象的銷燬順序?STL容器元素銷燬順序

  • 是否std::list/std::vector/std::map元素摧毀從開始或容器的末尾開始?
  • 我可以依靠std::mapstd::pair s內部存儲它的元素,因此一對中的某個鍵在它的值之前被銷燬(反之亦然)?

回答

18
  1. 在標準中未指定。
  2. 是的,但這意味着鑰匙被銷燬後其相關價值。
+0

+1 ............ :) – 2010-01-18 02:52:09

+0

#2,是的,這就是我的意思,應該寫另一種方式。你能指出我指定#2的標準部分嗎? – 2010-01-18 02:59:42

+0

20.2.2/1,這與我對特里回答的評論有關。 – 2010-01-18 03:01:42

4
  1. 不明
  2. 是的,你可以依靠的std ::地圖存儲它在標準::對元素,但我看不到任何東西,它指定一個std的關鍵部分::對爲在Value部分之前被破壞。
+2

該標準要求* first *和* second *數據成員並按順序顯示它們,如果該順序是必需的,則該順序也決定了構建和銷燬順序。 – 2010-01-18 02:49:18

+0

我找不到任何明確說明訂單是必需的,但也沒有任何說明允許不同。由於他們是公衆成員,並且絕對沒有標明「僅限博覽會」,因此其他任何條款都不適用於實施。所以,我將不得不站在所要求的順序上。 – 2010-01-18 03:03:21