3

如何删除重复值

std::vector <std::pair<UnicodeString, UnicodeString> > myVect;

是否有任何内置函数或者我需要为此编写自定义代码

4

2 回答 2

6

假设 (a) astd::set不是您想要的 [即您希望在 中允许重复元素std::vector,只是稍后删除它们] 并且 (b) 您不希望更改std::vector[即,当前顺序很重要],这都是合理的情况...您应该能够适应Fred Nurk如何从 C++ 中的列表中删除重复值vector购买的回答,以相应地替换list和修改less比较器。

于 2011-03-22T12:00:13.667 回答
2

如果您可以修改向量中的顺序,最好的方法如下:

   std::sort(myVect.begin(), myVect.end());
   myVect.erase(std::unique(myVect.begin(), myVect.end()), myVect.end());

只需确保 UnicodeString 接受 < 运算符。

但是,您可能希望使用不同的结构,例如 std::set 或 std::unordered_set 在插入时获得唯一保证。

于 2011-03-22T13:43:33.537 回答