2012-10-20 154 views
2

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

此外,是否有任何可能未定义的行为,列表可能混淆他们呢?

我曾经有过这样的印象:容器如std::deque等是安全的,但是唉std::deque没有双链接。

+3

是什么让你认为链表的std :: list实现不保存它的顺序? – DavidO

+0

@DavidO - 无;只是一个想法。我觉得他们是,但更多的时候是隐藏的东西,其他人知道我不知道。 – Qix

+0

那么,像'std :: vector'和'std :: deque'(以及任何好的旧数组),它就是一个序列容器。如果图书馆可以随机对其元素进行重新排序,它将失去其意义。 –

回答

4

是的订单保证在std::list。由于任何事情都可能发生在UB上,混合std :: list的顺序是可能的(尽管我不会这么想)。

简短的回答是,如果您的列表不符合您认为应该的顺序,那么最可能的原因就是您的程序中存在一个错误。

+3

这只是*仅*原因。 – DavidO

+0

很酷,我想了很多。只是想确认;我在网上找不到任何警告,但这并不意味着它不会发生。 – Qix

+0

也许我应该在*逻辑*中有bug,而不是一般的bug。 – john

相关问题