我有一个结构数组;数组大小为 N。
我想从数组中删除重复项;也就是说,进行就地更改,将数组转换为每个结构的单一外观。此外,我想知道新的大小 M(缩减数组中的最高索引)。
结构包括原语,因此比较它们很简单。
我怎样才能在 C++ 中有效地做到这一点?
我已经实现了以下运算符:
bool operator==(const A &rhs1, const A &rhs2)
{
return ( ( rhs1.x== rhs2.x ) &&
( rhs1.y == rhs2.y ) );
}
bool operator<(const A &rhs1, const A &rhs2)
{
if ( rhs1.x == rhs2.x )
return ( rhs1.y < rhs2.y );
return ( rhs1.x < rhs2.x );
}
但是,运行时出现错误:
std::sort(array, array+ numTotalAvailable);
* array will have all elements here valid.
std::unique_copy(
array,
array+ numTotalAvailable,
back_inserter(uniqueElements));
* uniqueElements will have non-valid elements.
这里有什么问题?