【发布时间】:2012-10-10 21:05:13
【问题描述】:
这是我的previous question 的后续,我想知道在 std::set 中存储非重复任意数据的最有效方法。
答案很有帮助地指出,对于自定义类,您需要实现 operator
但是我的特定数据类型是向量(在数学意义上)。我想要做的是仅在集合中不存在新向量时才将其存储。为此,如何在两个向量之间实现小于运算符?当有 3 个正交维度可供比较时,这似乎没有意义。我可以使用什么策略来做到这一点?
【问题讨论】:
这是我的previous question 的后续,我想知道在 std::set 中存储非重复任意数据的最有效方法。
答案很有帮助地指出,对于自定义类,您需要实现 operator
但是我的特定数据类型是向量(在数学意义上)。我想要做的是仅在集合中不存在新向量时才将其存储。为此,如何在两个向量之间实现小于运算符?当有 3 个正交维度可供比较时,这似乎没有意义。我可以使用什么策略来做到这一点?
【问题讨论】:
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;
}
};
【讨论】: