#include <iostream>
#include <string>
#include <vector>
#include <list>
using namespace std;
int main()
{
std::list<int> list{ 1, 2, 3, 4, 5 };
std::vector<int> vec1{ 1, 2, 3, 4, 5 };
std::vector<int> vec2{ 1, 2, 3, 4 };
if(vector<int>(list.begin(), list.end()) == vec1)
{
cout << "haha";
}
return 0;
}
vector<int>(list.begin(), list.end())
中没有名字. 怎么可能比较没有名字和vec1
vector<int>
.
如何比较没有名称和 vec1 的向量。
std::vector
已将operator==
重载为非成员函数。
template< class T, class Alloc >
bool operator==( const std::vector<T,Alloc>& lhs,
const std::vector<T,Alloc>& rhs );
这意味着当你写:
vector<int>(list.begin(), list.end()) == vec1
将创建一个临时std::vector<int>
对象,并将其作为第一个参数传递给上面显示的重载operator==
,而vec1
作为第二个参数传递给相同的重载operator==
,因此比较成功。换句话说,第一个参数lhs
绑定到临时std::vector<int>
,而第二个参数rhs
绑定到vec1
。