在vector c++中发出关系运算符

issue relational operator in vector c++

本文关键字:出关 关系 运算符 vector c++      更新时间:2023-10-16

今天我写了这段代码

#include <iostream>
#include <vector>
using namespace std;
int main(){
   vector <int> a (4,100);
   vector <int> b (1,100);
   cout<<(b<a);
}

正如引用所说,只有当b的内容在字典顺序上小于a的内容时才为真,否则为假,但在输出中我获得真,有人可以解释我。

http://en.cppreference.com/w/cpp/container/vector/operator_cmp

From http://en.cppreference.com/w/cpp/algorithm/lexicographical_compare,

字典比较是一个具有以下属性的操作:

。两个范围逐个元素比较。

。第一个不匹配元素定义了哪个范围在字典顺序上小于或大于另一个。

。如果一个范围是另一个范围的前缀,则较短的范围在字典顺序上小于另一个范围。

。如果两个范围具有相等的元素且长度相同,则这两个范围在字典顺序上相等。

。从字典顺序上看,空范围小于任何非空范围。

。两个空范围在字典顺序上相等。

调用std::lexicographical_compare来处理

的规则
a < b

表示如果一个范围是另一个范围的前缀,则较短的范围在字典顺序上小于另一个范围。

这里a范围是指从a.begin()到但不包括a.end()的所有元素——换句话说,a

中的所有元素同样,b范围指的是从b.begin()到但不包括b.end()的所有元素——换句话说,b 中的所有元素

b(保存单个值为100的整型)是a(保存4个值为100的整型)的前缀,因此b(较短的范围)被认为小于a,因此b 为真