矢量比较失败

Fail of Vectors Comparison

本文关键字:失败 比较      更新时间:2023-10-16

我正在尝试比较两个向量,据我所知,向量支持关系运算符,它是这样工作的:将v1中的第一个元素与v2中的第一个元素进行比较,依此类推。。

为什么下面代码的结果是(true),其中v1中的最后一个元素>v2?!

#include  <iostream>
#include  <vector>
using namespace std;
void main()
{
    vector <int> V1 = { 2,1,0,3 };
    vector <int> V2 = { 3,4,2,2 };
    cout << (V1 <= V2);  //print true !!

    system("pause");
}

operator==,!=,<,<=,>,>=比较两个向量字典调用的内容。从…起http://en.cppreference.com/w/cpp/algorithm/lexicographical_compare:

词法比较是一种具有以下属性的操作:

  • 两个范围逐元素进行比较
  • 第一个不匹配元素定义哪个范围在字典上小于或大于另一个

这就是为什么字符串";abcdx";小于";abced";并且[2,1,0,3]小于[3、4,2,2]。

std::vector是一个数据容器,除了包含多个元素之外,它与向量的数学性质无关。

std::vector的文档说明了比较的工作原理:

平等通过首先比较大小来执行比较(运算符==),如果则使用运算符==顺序比较元素,在第一失配处停止(就好像使用相等的算法一样)。

小于比较(运算符<)的行为就像在使用算法dictiongraphical_compare,按顺序比较元素使用运算符<以对等方式(即,检查