如何从std :: vector <std :: pair <unicodestring,unicodestring =“”>&gt; </std :: pair <unicodestring>中删除重复项

时间:2011-03-22 11:48:39

标签: c++ stl stdvector

如何从

中删除重复值
std::vector <std::pair<UnicodeString, UnicodeString> > myVect;

是否有内置函数或我需要为此

编写自定义代码

2 个答案:

答案 0 :(得分:6)

假设(a)std::set不是你想要的[你想在你的std::vector中允许重复的元素,只是稍后删除它们]和(b)你没有希望更改std::vector中元素的顺序[即当前顺序很重要],这两种情况都是合理的......您应该能够将Fred Nurk's answer调整为{{3}购买vector代替list并相应地修改less比较器。

答案 1 :(得分:2)

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

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

确保UnicodeString接受&lt;操作

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