向量比较失败

时间:2015-11-26 12:36:04

标签: c++ std stdvector

我正在尝试比较两个向量,正如我所知,向量支持关系运算符并且它以这种方式工作:将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");
}

2 个答案:

答案 0 :(得分:3)

operator==,!=,<,<=,>,>=比较两个矢量lexicographicall的内容。 来自http://en.cppreference.com/w/cpp/algorithm/lexicographical_compare

  

词典比较是一项具有以下属性的操作:

     
      
  • 逐个元素地比较两个范围。
  •   
  • 第一个不匹配元素定义哪个范围按字典顺序小于或大于另一个。
  •   

这就是字符串“abc d x”小于“abc e d”和[ 2 ,1,0, 3]小于[ 3 ,4,2,2]。

答案 1 :(得分:2)

std::vector是一个数据容器,与包含多个元素的向量的数学概念无关。

std::vector的{​​{3}}说明了比较的工作原理:

  

平等   比较(operator ==)是通过首先比较尺寸来执行的,如果是   它们匹配,使用operator ==顺序比较元素,   在第一次不匹配时停止(就像使用算法相同)。

     

小于比较(运算符&lt;)表现得好像使用算法一样   lexicographical_compare,按顺序比较元素   使用运算符&lt;以互惠的方式(即检查两者)