如何有效地从向量中删除重复的用户定义数据?

时间:2019-03-11 10:20:03

标签: c++ vector

让我们定义一个简单的结构A。

struct A
{
   int x,y,z;
};

我想按照以下规则从vector中删除一些元素。

if two compared segments' x is same, remove one which has larger y value.

[before remove]
x y z
1 2 3
1 3 4 
1 4 5

[after remove]
x y z
1 2 3

另一个规则。

if two compared segment's x and y values are same, remove one which has smaller z value.
[before remove]
x y z
1 2 3
1 2 4
1 2 5

[after remove]
1 2 5

我在STL中使用了独特的擦除功能来解决此问题..如下所示

bool compare_x(const A & p1, const A & p2)
{
    if(p1.x == p2.x) // to erase larger one.
        return p1.y < p2.y
}


...
vector<A> list; // let's assume that this vector has some data.

list.erase(unique(list.begin(), list.end(), compare_x), list.end());


但是有些人对我说,独特的功能不能很好地工作。

所以我想知道可以解决这类工作的任何技术或功能。

谢谢。

0 个答案:

没有答案