我有一個C++結構向量。該結構包含一個int和兩個字符串變量。我想擦除矢量中的重複值。我試過使用STD :: UNIQUE,但我知道這不是正確的方法。請幫助我解決我的問題的有效方法。提前致謝。在C++中刪除結構向量中的重複值
回答
可以在兩個步驟中執行此操作:
1)分類使用std::sort
與合適的二進制謂詞的載體。謂詞通過實施strict weak ordering來設置分類標準。
2)使用類似erase-remove
的成語與std::unique
。 std::unique
必須與步驟應用於排序相同的順序調用1
例子:
struct Foo
{
int a;
std::string b, c;
};
// lexicographical comparison provides strict weak ordering
bool cmp(const Foo& lhs, const Foo& rhs)
{
return std::tie(lhs.a, lhs,b, lhs.c) < std::tie(rhs.a, rhs.b, rhs.c);
}
std::vector<Foo> v = ....
std::sort(vec.begin(), vec.end(), cmp);
vec.erase(std::unique(vec.begin(), vec.end(), cmp), vec.end());
我懷疑OP想擦除所有*非唯一元素,而不是保留一個單獨的元素。至少這是我從「我知道'獨特'不是正確的方法。」 (然後再次,OP說「我知道」應該可以採取一粒鹽。) –
@KerrekSB好點。有一天,我會嘗試在打字前閱讀這些問題。不是說這個問題提供了很多有用的信息。 – juanchopanza
這個問題是完全無法回答的:-) –
如果你真的不介意的初始訂單,那麼你可以排序的載體,然後用獨特的方法 你有一個結構向量,所以你需要定義一個運算符<。我會發布一些代碼有點
假設你有下面的結構
struct myStruct
{
int a;
string b;
string c;
}
您需要定義一個操作者的元素進行排序
inline bool operator <(const myStruct& lhs, const myStruct& rhs)
{
return ( (lhs.a<rhs.a)
|| ((lhs.a==rhs.a) && (lhs.b< rhs.b))
|| ((lhs.a==rhs.a) && (lhs.b== rhs.b) (lhs.cb< rhs.c)));
}
然後,你需要理清你的載體並使用獨特的 http://www.cplusplus.com/reference/algorithm/unique/
vector<myStruct> vMyStruct;
vMyStruct.push_back(myStruct(1,"abc","abc"));
vMyStruct.push_back(myStruct(2,"abc","abc"));
vMyStruct.push_back(myStruct(1,"abc","abc"));
vMyStruct.push_back(myStruct(2,"def","def"));
vMyStruct.push_back(myStruct(2,"def","ghi"));
vMyStruct.push_back(myStruct(3,"def","ghi"));
std::sort (vMyStruct.begin(), vMyStruct.end()); // using default comparison:
std::vector<myStruct>::iterator it = std::unique (vMyStruct.begin(), vMyStruct.end());
- 1. C++刪除向量中的重複項
- 2. 如何在命令中刪除向量中的重複值?
- 3. R - 刪除向量中的重複值到下一個值
- 4. C++中的重複結構
- 5. 刪除C++向量中的重複條目
- 6. C++如何從類類型的向量中刪除重複項?
- 7. 刪除STL向量中的重複STL向量
- 8. 從變量中刪除重複值
- 9. 結構向量中的結構向量
- 10. 在字符串中的向量中刪除重複
- 11. 刪除重複的表結構(蟒蛇)
- 12. 在gridview行中刪除重複的值
- 13. 在Python中刪除重複的值
- 14. 在C++中對結構向量排序
- 15. 如何刪除R中的向量中的重複值的唯一實例?
- 16. 結構中的向量的C++映射
- 17. 刪除結果集中的重複行
- 18. 刪除SQL結果中的重複項
- 19. C++ 11 - 在結構向量中修改結構的成員
- 20. 不在Excel中刪除重複值
- 21. 在結構向量的結構向量圖中存儲數據
- 22. C++,刪除向量
- 23. 從類型結構的向量中刪除元素
- 24. C + +在STL結構向量中的替換向量
- 25. C++中的向量和結構
- 26. 如何從我的結構數組中刪除重複項?
- 27. 刪除結構數組中重複的數據
- 28. C++中的向量迭代和刪除
- 29. 如何刪除多維向量內的重複向量?
- 30. 刪除重複值csv上結合
顯示你有什麼嘗試和你失敗的地方。 –
此外,沒有必要尋求一個「有效的」解決方案,因爲無效的解決方案根本就不是解決方案。 –