【发布时间】:2018-10-04 05:41:38
【问题描述】:
我正在尝试为具有自定义键的 C++ 映射编写自定义比较器。
struct key { int year; int no; };
map<key, detail, compare> details_map;
如果year 值相等,则必须比较no 值。
我试图找出一种方法来编写一个可以比较两个值的比较器。到目前为止,我只能编写一个比较一个值的比较器。
struct Compare{bool operator()(const key &lhs,const key &rhs)const{return lhs.year<rhs.year;}}
有人可以解释一下比较器在map 中的工作原理吗?
另外,是否可以将比较器写成函数?
【问题讨论】:
-
使用条件运算符比较多个值,就像在普通函数中所做的那样。
-
对应的Java问题是stackoverflow.com/questions/4805606/…
-
在 c++ 中它与在 Java 中不同。在 c++ 中,比较器实际上是“少运算符”,而在 Java 中,它是 3 路比较。 C++ 中的类比是“操作员飞船”,但它只是从 c++ 20 开始,并且 std::map 仍然期望将“操作员少”作为比较模板参数。
标签: c++ comparator