如何从中删除重复值
有没有内置的函数可以用,还是需要编写自定义代码来实现这个功能?
std::vector <std::pair<UnicodeString, UnicodeString> > myVect;
有没有内置的函数可以用,还是需要编写自定义代码来实现这个功能?
std::vector <std::pair<UnicodeString, UnicodeString> > myVect;
std::set
,因为你想允许在std::vector
中有重复的元素,只是想稍后将它们删除;(b)你不想改变std::vector
中元素的顺序(也就是说,当前的顺序很重要),这两种情况都很合理......你应该能够根据Fred Nurk的答案对如何从C++列表中删除重复值进行调整,将list
替换为vector
并相应地修改less
比较器。vector
,他会得到O(N^2)的行为,因为vector::erase()
是O(N),而list::erase()
是O(1)。是否有一种适用于向量的解决方案? - Robᵩstd::set
,(b) @jame是否可以对向量进行sort
,或者(c)速度是否是一个问题,所以我现在将保留我的答案。 - johnsyweb如果您可以修改向量中的顺序,则最好的方法如下:
std::sort(myVect.begin(), myVect.end());
myVect.erase(std::unique(myVect.begin(), myVect.end()), myVect.end());
请确保UnicodeString接受<运算符。
然而,您可能希望使用不同的结构,如std::set或std::unordered_set,在插入时具有唯一性保证。