因此我有std::vector<type>.
类类型没有operator<
但有operator==
。
因此,我无法使用std::unique
对我的矢量进行排序。
如何从vector中删除重复的元素?
答案 0 :(得分:1)
我认为最好的选择是编写一些二进制谓词用于向量的排序,然后使用std::unique
。请记住,谓词必须是可传递的!
如果这不是一个选项,除了使用智能算法之外你不能做任何事情:
std::vector<type> a
std::vector<type> result;
for (unsigned i = 0; i < a.size(); ++i) {
bool repeated = false;
for (int j = 0; j < i; ++j) {
if (a[j] == a[i]) {
repeated = true;
break;
}
}
if (!repeated) {
result.push_back(a[i]);
}
}
// result stores the unique elements.