这是我previous question的后续内容,我想知道在std :: set中存储非重复任意数据的最有效方法。
答案有用地指出,对于自定义类,您需要实现运算符< (如果我理解正确的话)。
但是我的特定数据类型是一个向量(在数学意义上)。我想要做的是只在它不存在的情况下在集合中存储一个新的向量。为此,我如何在两个向量之间实现less-than运算符?当有3个正交维度进行比较时似乎没有意义。我可以用什么策略来做这件事?
答案 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;
}
};