C ++中的向量唯一性

时间:2012-10-10 21:05:14

标签: vector stdset

这是我previous question的后续内容,我想知道在std :: set中存储非重复任意数据的最有效方法。

答案有用地指出,对于自定义类,您需要实现运算符< (如果我理解正确的话)。

但是我的特定数据类型是一个向量(在数学意义上)。我想要做的是只在它不存在的情况下在集合中存储一个新的向量。为此,我如何在两个向量之间实现less-than运算符?当有3个正交维度进行比较时似乎没有意义。我可以用什么策略来做这件事?

1 个答案:

答案 0 :(得分: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;
  } 

};