使用关系运算符比较 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;
我尝试使用关系运算符比较 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
andrhs
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;