如何解决使用关系运算符比较2个向量
我尝试使用关系运算符比较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
时,一旦lhs
中的内容在字典上大于rhs
的内容,它将返回true。
异常:但是,如果两个向量相等,则比较将返回false:
std::vector<int> v1{1,2,3};
std::vector<int> v2{1,3};
std::cout << (v1 > v2) + ' ' + (v1 < v2) << std::endl;
,
布尔运算符true,否则返回false。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。