【问题标题】:Does erasing an element of a std::vector preserve ordering?擦除 std::vector 的元素是否保留排序?
【发布时间】:2012-04-12 18:05:24
【问题描述】:

我想知道在擦除任意元素后是否始终保留 std::vector 容器的元素顺序(例如:推送 0,1,2,3,擦除 1,获取 0,2, 3).

【问题讨论】:

  • 为什么不自己测试一下?
  • @L7ColWinters:这不会告诉他这是否在那个时候有效,或者是否真的得到保证。
  • @Mat 如果他使用不同的原语进行多个测试用例,它会这样做
  • @L7ColWinters:没有。它只会告诉他他所有的测试都是这样的。 char *a = new char[1]; a[1] = 0; 可能不会在大多数系统上出现段错误或导致任何明显的问题 - 它仍然是未定义的行为并且可能随时中断。

标签: vector


【解决方案1】:

是的,是的。还要注意复杂性(第 23.3.6.5 节):

复杂性:T的析构函数被调用的次数等于 删除的元素的数量,但移动赋值运算符 T被称为的次数等于元素的个数 删除元素后的向量。

和迭代器失效:

效果:在点或点之后使迭代器和引用无效 擦除。

如果您不想通过标准查看此类详细信息并且没有信心,请查看reference site

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-31
    • 2011-05-06
    • 2022-10-24
    • 2011-09-30
    • 2010-10-25
    • 2013-10-22
    • 1970-01-01
    相关资源
    最近更新 更多