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

我不确定是在什么基础上进行比较?似乎是逐个元素地比较。但我找不到任何关于此的资源。任何有关资源或解释的帮助将不胜感激。

4

2 回答 2

1

我不确定是在什么基础上进行比较?

C++ 参考说:

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

按字典顺序比较 和 的内容lhsrhs

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

因此,当您比较时,一旦其中的内容按字典顺序大于 的内容v1 > v2,它将返回 true 。lhsrhs

例外:但是,如果两个向量相等,则比较将返回 false:

std::vector<int> v1{1, 2, 3};
std::vector<int> v2{1, 2, 3};
std::cout << (v1 > v2) + ' ' + (v1 < v2) << std::endl;
于 2020-08-13T06:24:37.573 回答
0

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

于 2020-08-13T06:20:07.923 回答