std::set
コンテナに一意の要素を含めるためにa を使用しようとしています。
私は3Dオブジェクトを持っているので:
Class Object3D{
private:
float x;
float y;
float z;
}
これらのオブジェクトは、 の場合に等しくなり (A.x==B.x && A.y==B.y && A.z==B.z)
ます。
std::set 実装では、 element A==B if (!(A < B) && !(B>A))
.
私の比較では不可能です...==
演算子をオーバーロードしようとしました。
を呼び出すときに値を比較するために set コンテナーを選択しましたinsert(a)
。std::vector v
私は彼のイテレータでそのようなことをしていました:
if(!(A).inVector()){
v.push_back(A);
}
と
bool inVector(){
for(itr = v.begin();itr != v.end();itr++){
if(this->x==(*itr)->x && this->y==(*itr)->y && this->z==(*itr)->z){
return true;
}
}
return false;
}
オブジェクト (10000 ~ 100000) ごとにチェックするのは、複雑でコストがかかります。
誰かがアイデアを持っていますか?