1

这是我之前的问题的后续,我想知道在 std::set 中存储非重复任意数据的最有效方法。

答案很有帮助地指出,对于自定义类,您需要实现 operator< (如果我理解正确的话)。

但是,我的特定数据类型是向量(在数学意义上)。我想要做的是仅在集合中不存在新向量时才将其存储。为此,如何在两个向量之间实现小于运算符?当有 3 个正交维度可供比较时,这似乎没有意义。我可以使用什么策略来做到这一点?

4

1 回答 1

1

std::set 可以接受任何实现严格弱比较的比较类作为其第二个模板参数,它不必是 '<' 运算符。只需编写一个与“<”相同的比较:

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 回答