c – std :: map要求的键(设计决策)
当我做一个std :: map< my_data_type,mapped_value>时,我期望的是my_data_type有自己的运算符< lt.
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 ==,根本不是“不可避免的”.对于地图的目的,两个密钥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 ==,如果!(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(); 这显然是不需要的.事实上,这是你的建议效率低下! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |