使用关系运算符比较 2 个向量

Comparing 2 vectors using relational operators

我尝试使用关系运算符比较 2 个向量。

vector<int>v1 {1, 2, 3};
vector<int>v2 {3, 40, 4};

cout<<(v1<v2)<<endl;    // Prints 1
cout<<(v1>v2)<<endl;    // Prints 0

我不确定比较的依据是什么?好像是一个元素一个元素的比较。但我找不到与此相关的任何资源。任何有关资源或解释的帮助将不胜感激。

bool operator<(const std::vector& rhs) 按字典顺序比较内容,return true 如果 lhs 小于 rhs,否则为 false。

What I am not sure of is on what basis is the comparison happening?

C++ 参考说:

template< class T, class Alloc >
bool operator<( const std::vector<T,Alloc>& lhs,
                const std::vector<T,Alloc>& rhs );

Compares the contents of lhs and rhs lexicographically.

字典顺序大致可以说是按字母顺序排列内容。

因此,当您比较 v1 > v2 时,一旦 lhs 中的内容按字典顺序大于 rhs 的内容,它就会 return 为真。

Exception: 但是,如果两个向量相等,则比较将 return false:

std::vector<int> v1{1, 2, 3};
std::vector<int> v2{1, 2, 3};
std::cout << (v1 > v2) + ' ' + (v1 < v2) << std::endl;