構造体の配列があります。配列のサイズは N です。
配列から重複を削除したい。つまり、インプレース変更を行い、配列を変換して各構造体の外観を 1 つにします。さらに、新しいサイズ 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.
ここで何が問題なのですか?