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