【问题标题】:Is std::list order guaranteed?是否保证 std::list 顺序?
【发布时间】:2012-10-20 09:58:03
【问题描述】:

std::list 中元素的顺序是否保证保持有序(当然,除非发生排序或其他事情)?

此外,列表是否存在任何潜在的未定义行为,可能会将它们弄乱?

我以前/现在的印象是,std::deque 之类的容器是订单安全的,但可惜std::deque 不是双重链接的。

【问题讨论】:

  • 是什么让您认为链表的 std::list 实现没有保留其顺序?
  • @DavidO - 什么都没有;只是一个想法。我认为他们是,但往往隐藏着一些其他人知道我不知道的东西。
  • 好吧,就像std::vectorstd::deque(以及任何好的旧数组)一样,它是一个序列容器。如果库可以随机重新排序其元素,它就会失去它的意义。

标签: c++ stl containers


【解决方案1】:

是的,std::list 保证订单。由于 UB 可能发生任何事情,因此可能会混淆 std::list 的顺序(尽管我认为不太可能)。

简短的回答是,如果您的列表没有按照您认为的顺序排列,那么最可能的原因是您的程序中存在错误。

【讨论】:

  • 这只是唯一的原因。
  • 酷,我想的差不多了。只是想确认一下;我在互联网上找不到任何关于它的警告,但这并不意味着它不会发生。
  • 也许我应该在您的 逻辑 中存在错误,而不是一般的错误。
猜你喜欢
  • 2010-11-05
  • 2011-02-08
  • 1970-01-01
  • 2020-05-27
  • 2020-05-26
  • 2016-12-14
  • 1970-01-01
  • 2016-01-12
相关资源
最近更新 更多