我在尋找替代品std::set
。我需要它來支持更多的操作,那麼std::set
:從一組到另一替代std :: set(能夠將元素從一組移動到另一組)
移動元素,而「創建新建 - >複印通>刪除舊」。
分割設定在某個位置得到兩套(可使用
std::list splice
可以得到類似的行爲)設置操作(如工會)沒有不必要的複製。
std::set_union
將複製來自集合A和B的元素以設置C,如果我只需要設置C並且不再需要A和B,那麼這是低效的。
有沒有支持這些操作的任何實現,或者我需要自己寫一個?
你想要的不是'std :: set'的替代方法,而只是更多的算法集合。感謝完全透明的C++容器和算法庫的設計。您可以添加算法而不必更改數據結構。至於第一點,你可以使用'std :: move'。 –
@KonradRudolph,'set'迭代器是const來防止你使鍵失效。如果移動元素改變了值(很可能),它在該集合中的位置將需要改變。你需要非常小心地移動元素,然後通過迭代器立即擦除它,以便在移動後沒有任何東西檢測值 –
糟糕,我的意思是說:「即使你丟棄了const你需要非常小心......「 –