让我们定义一个简单的结构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());
但是有些人对我说,独特的功能不能很好地工作。
所以我想知道可以解决这类工作的任何技术或功能。
谢谢。