<分区>
因此我有 std::vector<type>.
类类型没有operator<
但有 operator==
.
因此,我无法使用 std::unique
对 vector 进行排序.
我如何从 vector 中删除重复的元素?
<分区>
因此我有 std::vector<type>.
类类型没有operator<
但有 operator==
.
因此,我无法使用 std::unique
对 vector 进行排序.
我如何从 vector 中删除重复的元素?
最佳答案
我认为最好的选择是编写一些二进制谓词用于 vector 的排序,然后使用 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.
关于c++ - 如何从 vector 中删除重复的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21982498/