如何从向量中删除重复的元素?

时间:2014-02-24 08:29:54

标签: c++ stdvector

因此我有std::vector<type>.

类类型没有operator<但有operator==。 因此,我无法使用std::unique对我的矢量进行排序。

如何从vector中删除重复的元素?

1 个答案:

答案 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.