首页 > 解决方案 > 标准中术语相同、相等、等价的含义

问题描述

标准中至少有三个具有相似含义的术语:相同相等等效。所有这些都在描述算法时使用。说,std::adjacent_find

在范围内搜索[first, last)两个连续的相同元素。

但是比较器的描述说:

如果元素应该被视为相等,则返回 true 的二元谓词

当涉及到关联容器时,使用了等价词。对于两个元素ab它意味着(大致)!(a < b) && !(b < a)。而平等意味着a == b

术语相同是什么意思?是否在标准中定义?

标签: c++c++-standard-library

解决方案


我在标准的相关部分中找不到“相同”的定义。看起来像这个词的口语用法。您的报价来自 cppreference 的事实进一步支持了这一点。adjacent_find标准中的规范定义 直接用(或谓词)来指定==

返回: 第一个迭代器i,使得ii + 1都在 [first, last) 范围内,以下相应条件成立:*i == *(i + 1), pred(*i, *(i + 1)) != false. 如果没有找到这样的迭代器,则返回 last。

虽然 cppreference 是一种宝贵的资源,但它的目标是将标准文本消化成易于访问和理解的材料。有时,它会使用口语化的词语进行直观的解释。这是一个这样的案例。


推荐阅读