c++ - 从非原始类型的 vector 中删除重复元素

标签 c++ vector duplicates element

我读取了非常多的点坐标x、y和z,并将它们存储在Point结构的 vector 中,以做进一步的处理。

struct Point{
    double x,y,z;
    Point (double x0, double y0, double z0): x(x0), y(y0), z(z0) {}
}


vector<Point> pv;
pv.push_back (Point(x,y,z));

我还有一个哈希函数,可以将具有相同坐标的所有点连同它们的 vector 索引一起映射到 unordered_multimap 以进行其他处理。

问题是我从文件中读取了很多重复的点,我必须去掉这些元素。我已经看到有关如何从原始类型 vector 中删除重复元素的解决方案,但这不适用于我的情况。此外,许多建议的方法需要不适用于点结构的排序。

最佳答案

定义 less 运算符,然后应用与原始类型相同的方法

如何定义运算符是:

struct Point{
    (...)
    const bool operator < ( const Point &r ) const{
        return (x<r.x) || (x==r.x && y<r.y) || (x==r.x && y==r.y && z<r.z);
    }
};

关于c++ - 从非原始类型的 vector 中删除重复元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42470697/

相关文章:

c++ - 如何找到可以在运行时分配给 vector 的最大大小?

c++ - C++ STL 中 vector 的恒定时间交换逻辑

c# - 需要在 SortedCollection 中允许重复(C#,2.0)

c++ - SDL C++ 窗口立即关闭

c++ - 如何使用 C++ API 限制 tensorflow (r1.1) 中的 GPU 使用

c++ - '->C' 的左侧必须指向类/结构/union/通用类型

android - Android Studio Gradle构建中的字符串资源重复

c++ - std::shared_ptr::reset() "invalidates"其他引用

C++从带有&返回指向未初始化结构的指针的 vector 获取结构

sql - 从表中选择最大数量的唯一对