我尝试使用关系运算符比较 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
我不确定是在什么基础上进行比较?似乎是逐个元素地比较。但我找不到任何关于此的资源。任何有关资源或解释的帮助将不胜感激。
我尝试使用关系运算符比较 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
我不确定是在什么基础上进行比较?似乎是逐个元素地比较。但我找不到任何关于此的资源。任何有关资源或解释的帮助将不胜感激。
我不确定是在什么基础上进行比较?
C++ 参考说:
template< class T, class Alloc > bool operator<( const std::vector<T,Alloc>& lhs, const std::vector<T,Alloc>& rhs );
按字典顺序比较 和 的内容
lhs
。rhs
字典顺序大致可以说是按字母顺序排列内容。
因此,当您比较时,一旦其中的内容按字典顺序大于 的内容v1 > v2
,它将返回 true 。lhs
rhs
例外:但是,如果两个向量相等,则比较将返回 false:
std::vector<int> v1{1, 2, 3};
std::vector<int> v2{1, 2, 3};
std::cout << (v1 > v2) + ' ' + (v1 < v2) << std::endl;
bool operator<(const std::vector& rhs) 按字典顺序比较内容,true
如果 lhs 小于 rhs 则返回,否则返回 false。