我向std :: list和std :: set添加了兩個不同的元素,我希望std :: list按std的順序排序: :組。我嘗試過的一種方式是當元素被添加到std :: set時,找到該元素,然後使用std :: distance(begin,found)獲取該元素的索引,然後將該元素插入std :: list中的該索引。有沒有其他方法?使用std :: set排序std :: list
0
A
回答
4
您應該使用std::map,將放入set中的數據作爲關鍵字,並將放入列表中的數據作爲值使用。
這樣你的列表元素將被排序。
0
這太複雜了! 事實上,std :: set實現爲二叉樹,並使用std :: less進行排序(默認情況下)。此外,這提供了「穩定的」迭代器,這意味着std :: set :: insert返回的迭代器將有效,直到元素被明確擦除。所以你可以把插入的迭代器放到std :: list。 明智的經文 - std :: list也有穩定的迭代器,所以你可以把項目列表,但放置迭代器來設置。最後一種方法是覆蓋std :: less
相關問題
- 1. std:排序vs插入std :: set
- 2. 字符串排序 - std :: set或std :: vector?
- 3. 在std :: list中保存std :: set
- 4. forward_list,set,list等如何調用std :: allocator?
- 5. C++ 11 std ::函數和std ::引用包裝用於排序std :: set
- 6. std :: back_inserter爲std :: set?
- 7. C++ std :: set ::使用std :: remove_if擦除::
- 8. 不能使用std :: iota和std :: set
- 9. 使用std ::排序的std ::列表進行排序
- 10. 如何阻止std :: set從排序?
- 11. 嚴格的弱排序和std :: set/std :: map
- 12. std :: list排序算法運行時
- 13. std :: list :: clear invalidate std :: list :: end iterator?
- 14. std ::排序獲取std :: bad_alloc
- 15. std :: list vs std :: vector迭代
- 16. mem_set爲std :: map或std :: list
- 17. 在類中使用std :: set?
- 18. 混淆使用std ::少和std ::有更大的std ::排序
- 19. 在std :: set
- 20. std :: list和std :: map的常用算法?
- 21. 擴展std :: list
- 22. std :: list thread_safety
- 23. 使用std :: list時使用std :: string的內存泄漏<std::string>
- 24. 如何打印std :: maps的std :: set
- 25. 將std :: map複製到C++的std :: set
- 26. Std :: map \ std :: set包含重複鍵
- 27. std :: set和std :: vector有什麼區別?
- 28. std :: set :: equal_range std :: pair的容器
- 29. 使用,而使用std ::排序在C++
- 30. 無法在迭代器的std :: set中插入元素到std :: list
你爲什麼要這樣做?對於您的問題,可能會有更好的整體解決方案,而不是找到可能保留列表並設置同步的方法。 – Patrick 2010-01-22 10:05:32
只保留std :: set,當你需要std :: list時,你可以從std :: set創建它。 – fabrizioM 2010-01-22 10:17:32
std :: set包含一個'key',而std :: list包含一個與key有關的值。在那種情況下,我認爲使用std :: map會是一個更好的主意。 – cpx 2010-01-22 10:41:09