struct my_data_type { my_data_type(int i) : my_i(i) { } bool operator<(const my_data_type& other) const { return my_i < other.my_i; } int my_i; };
原因是您可以导出运算符>和operator ==来自operator< b < a意味着> b,所以有运算符>. !(a< b)&& !(b
operator==
is inevitable forstd::map::find()
这是你错误的地方.地图不使用operator ==,根本不是“不可避免的”.对于地图的目的,两个密钥x和y被认为是等效的,如果!(x< y)&& (y
if (search_key < current_element) go_left(); else if (current_element < search_key) go_right(); else declare_equivalent();
你建议的是:
if (search_key < current_element) go_left(); else if (current_element < search_key) go_right(); else if (current_element == search_key) declare_equivalent();
这显然是不需要的.事实上,这是你的建议效率低下!
相关文章
转载注明原文:c – std :: map要求的键(设计决策) - 代码日志
解决方法
operator==
is inevitable forstd::map::find()
这是你错误的地方.地图不使用operator ==,如果!(x< y)&& (y
if (search_key < current_element) go_left(); else if (current_element < search_key) go_right(); else declare_equivalent();
你建议的是:
if (search_key < current_element) go_left(); else if (current_element < search_key) go_right(); else if (current_element == search_key) declare_equivalent();
这显然是不需要的.事实上,这是你的建议效率低下!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。