1

これは、重複しない任意のデータを std::set に格納する最も効率的な方法を知りたいという以前の質問のフォローアップです。

答えは、カスタムクラスの場合、 operator< を実装する必要があることを指摘してくれました(私が正しく理解していれば)。

ただし、私の特定のデータ型はベクトルです (数学的な意味で)。私がやりたいことは、まだ存在しない場合にのみ、新しいベクターをセットに格納することです。そのために、2 つのベクトルの間に以下演算子を実装するにはどうすればよいでしょうか? 比較する3つの直交次元がある場合、意味がないようです。これを行うためにどのような戦略を使用できますか?

4

1 に答える 1

1

std::set は、2 番目のテンプレート パラメーターとして厳密な弱比較を実装する任意の比較クラスを受け入れることができます。'<' 演算子である必要はありません。「<」のように機能する比較を書くだけです。

struct Compare {

  bool operator( )( const T& left, const T& right ) const {
    if ( left.dimension1 < right.dimension1 ) return true; 
    if ( left.dimension2 < right.dimension2 ) return true; 
    return left.dimension3 < right.dimension3;
  } 

};
于 2012-10-10T21:16:54.663 に答える