![](/img/trans.png)
[英]How to remove duplicates from std::vector <std::pair<UnicodeString, UnicodeString> >
[英]How to remove duplicates from a vector of pair<int, Object>
這就是我現在正在嘗試的。 我做了一個比較功能:
bool compare(const std::pair<int, Object>& left, const std::pair<int, Object>& right)
{
return (left.second.name == right.second.name) && (left.second.time == right.second.time) &&
(left.second.value == right.second.value);
}
添加元素后,我調用std::unique
過濾重復項:
data.push_back(std::make_pair(index, obj));
data.erase(std::unique(data.begin(), data.end(), compare), data.end());
但這似乎不起作用。 而且我不知道問題出在哪里。
從我的理解std::unique
應該使用compare
謂詞。
我應該如何更新代碼以使其正常工作?
我正在使用C ++ 03。
編輯:
我也曾嘗試對它進行排序,但仍然無法正常工作。
bool compare2(const std::pair<int, Object>& left, const std::pair<int, Object>& right)
{
return (left.second.time< right.second.time);
}
std::sort(simulatedLatchData.begin(), simulatedLatchData.end(), compare2);
std::unique
要求傳遞給它的范圍使所有重復的元素彼此相鄰才能工作。
您可以在范圍內使用std::sort
,然后再進行unique
調用,以實現自動分類將重復項分組的目的。
排序和過濾是很好的方法,但是由於您從不希望重復,所以為什么不使用std::set
呢?
而且當我們使用它時,這些對看起來像鍵值一樣可疑,那么std::map
呢?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.