2012-10-20 99 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

相關問題