std::list是否保证顺序?

6

std::list中的元素顺序是否保证按顺序排列(除非进行排序或其他操作)?

此外,std::list是否存在任何可能导致其混乱的未定义行为?

我一直以为像std::deque这样的容器是有序的,但遗憾的是,std::deque不是双向链接的。


3
为什么您认为标准库中基于链表实现的std::list没有保持它的顺序? - DavidO
@DavidO - 没什么,只是一个想法。我想他们可能是这样,但往往有些隐藏的东西别人知道而我不知道。 - Qix - MONICA WAS MISTREATED
1
好的,就像std::vectorstd::deque(以及任何好老的数组)一样,它是一个序列容器。如果库可以随机重新排序其元素,它的意义将大大降低。 - Christian Rau
1个回答

7

是的,在 std::list 中,元素顺序是有保证的。虽然 UB 可能会发生,但混淆 std::list 顺序的情况很少见。

简短的回答是,如果您的列表顺序与您认为的不同,则最可能的原因是程序中存在错误。


4
这几乎是唯一的原因。 - DavidO
很酷,我也是这么想的。只是想确认一下;我在互联网上找不到任何关于它的警告,但这并不意味着它不可能发生。 - Qix - MONICA WAS MISTREATED
也许我应该检查你的“逻辑”而不是一般性的错误。 - john

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接