【发布时间】:2018-07-14 09:42:06
【问题描述】:
我的问题,或者更确切地说,困扰我的问题是以下代码编译:
auto nonsense = std::vector<int>{20,30,40,50} < std::vector<int>{21,29,41,49}
为什么会这样?
比较是什么意思?
在我看来,这并不明显(也可以是平均比较、所有值之间比较的总和、最大/最小比较、长度比较、分配的整个内存区域的比较......等等)什么“比较两个数组”意味着在== 和!= 的情况之外,那么为什么这些运算符会存在呢?他们的预期目的是什么?为什么要引入它们,为什么没有从标准中删除?
【问题讨论】:
-
lexicographical comparison 的用例可能足够多,这些操作存在。
-
答案在语言规范中。你为什么在这里问?
-
我认为,如果您以稍微不那么好斗的方式提出您的问题,您将获得更少的反对票。也许放弃“......为什么他们没有从标准中删除?”部分。
-
这是基于意见的。答案(包括当前的答案)几乎可以说:因为有人认为这是个好主意,但你不这么认为。
-
代码中没有显示“不等式”(又名“不等于”:
!=)运算符。
标签: c++ containers std c++17