簡體   English   中英

使用std :: set排序std :: list

[英]Sorting std::list using std::set

我向std :: list和std :: set都添加了兩個不同的元素,我希望std :: list的排序順序與std :: set相同。 我嘗試的一種方法是將元素添加到std :: set時,找到該元素,然后使用std :: distance(begin,found)獲得該元素的索引,然后將該元素插入到std :: list中的該索引中。 還有其他辦法嗎?

您應該使用std :: map ,並將放入集合中的數據作為鍵,並將放入列表中的數據作為值。

這樣,您的列表元素將被排序。

太復雜了! 實際上std :: set是作為二叉樹實現的,並使用std :: less進行排序(默認情況下)。 這也提供了“穩定的”迭代器,這意味着std :: set :: insert返回的迭代器將一直有效,直到明確刪除元素為止。 因此,您可以將插入的迭代器放入std :: list。 而明智的詩句-std :: list也具有穩定的迭代器,因此您可以將項目放在列表中,但可以放置迭代器進行設置。 最后一種方法是重寫std :: less

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM