VS C++报错:二进制"<":没有找到接受"const _Ty"类型的左操作数的运算符

Visual Studio
错误 C2678:二进制“<”: 没有找到接受“const _Ty”类型的左操作数的运算符(或没有可接受的转换)
c:\program files (x86)\microsoft visual studio\2017\community\vc\tools\msvc\14.16.27023\include\xstddef 141

这个错误的意思是,找不到或错误定义了自定义类的"<"比较运算符。

首先检查类的定义。并没有定义"<"比较运算符,也没有调用std::sort之类的函数,更没有用到比较操作。为什么会报错呢?经查找,发现我失手把类用作了std::map的key类!而std::map是一个有序关联容器,这意味着它在内部会给key排序。这就出现了以上错误信息。

解决办法一:把所有的std::map换成std::unordered_map,注意包含库文件#include ,简单操作一番,还是不行!它得有索引,也就是一个哈希值函数。问题的解决反而被复杂化了。

参考文章

解决办法二:没有比较运算符,那就定义一个?<可读性下降!>勉强能行,将就用吧。

如果有更好的方法欢迎评论区交流!

你可能感兴趣的:(VS C++报错:二进制"<":没有找到接受"const _Ty"类型的左操作数的运算符)