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

标签 c++ stdvector

<分区>

因此我有 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/

相关文章:

c++ - 在另一个 vector 中搜索一个 vector

c++ - MFC CListView 自定义绘图 - 如果文本等于值,则为行着色

c++ - 使用 CMake 的 OpenGL + Qt

c++ - 在超出范围的结构对象上

C++ valarray 与 vector

c++ - 为什么 C++ 分配器避免就地重新分配

c++ - Qt 的 MOC 生成的 .cpp 文件中有哪些部分?

c++ - 关于C++中的动态链接库

c++ - 提供对 SoA 的 AoS 访问

c++ - 自定义 vector STL 容器中的 clear() 问题