2010-01-18 65 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