是否有一個有效的方法來轉換multiset設置,而不是循環multimap中的所有元素,測試如果設置了元素,如果是的話,插入如果不繼續?對於multiset和set,我更喜歡使用庫存C++容器,但其他語言實現也可以。有效的方法來轉換multiset設置
0
A
回答
2
std::set<T> new_set(multiset_obj.begin(), multiset_obj.end();
應該這樣做。讓語言和容器要求成爲你的朋友。
2
您可以從現有的多集
template<typename T>
set<T> SetFromMultiset(multiset<T> const &ms)
{
set<T> ret(ms.cbegin(), ms.cend())
return ret;
}
我假設你正在使用C++ 11一組,所以沒有開銷的值返回一個容器,只有一個移動操作(甚至儘管這是RVO適用的情況)
0
我不確定以上答案是否最有效。
multiset中的項目是有序的,但set的構造函數可能不知道,並且會對每個插入項執行查找。
試試這個:
std::set<T> result;
for (auto item: the_multiset) {
result.insert(result.end(), item);
}
但它仍然是不完美的,因爲它會走過所有重複值一個接一個,如果有大量重複值,它浪費時間。因爲它是一個多重集合,所以內部數據可以像map<key, count>,
一樣,它應該允許開發人員直接轉到下一個不同的值。我希望這可以在將來的C++中發生。
相關問題
- 1. 更有效的毫秒轉換方法?
- 2. 將Multiset轉換爲地圖
- 3. 最有效的ruby方法來轉換這個數組?
- 4. C:最有效的方法來設置內的變量
- 5. OpenCV:有效的方法來自動設置NoiseSigma在BackgroundSubtractorMOG
- 6. 更有效的方法來設置變量?
- 7. 更有效的方法來設置來自多個來源的變量?
- 8. NSCursor:「設置」方法沒有效果
- 9. Delphi設置無效的類型轉換
- 10. 有沒有一種有效的方法來做jQuery切換?
- 11. 有沒有一種有效的方法將Bundle轉換爲ContentValues?
- 12. 更有效的方式來讀取數組中的值轉換
- 13. 什麼是正確的方法來改變UINavigationController轉換效果
- 14. std ::轉換multiset給我錯誤C3892
- 15. 有效的方式來海峽轉換爲整數
- 16. Java找到一個有效的方法有多少轉換?
- 17. 替換轉置方法?
- 18. std :: multiset :: iterator = NULL不再有效嗎?
- 19. 有效的算法來轉換整數爲十進制
- 20. Python - 有效的方法來翻轉文件中的字節?
- 21. 有效的方法來檢查對象的存在和設置等於Rails
- 22. STL multiset設置插入順序C++
- 23. 實現multiset的標準方法?
- 24. 更有效的方式來讀取文件和設置變量?
- 25. 設置公共無效方法的JTextField
- 26. 最有效的方法來替換XML流中的文本
- 27. 有效的方法來替換字符串中的字符(Java)?
- 28. 最有效的方法來替換數組中的空值
- 29. 爲所有父母設置100%身高的有效方法
- 30. 簡單的方法來設置GitLab與現有的Gitolite配置
爲什麼不插入所有元素? 'set'本身將防止重複,你不需要。除此之外,除非事先跟蹤重複,否則沒有更有效的方法來插入所有元素,而不是插入所有元素。 –