<int> 比较没有名称的向量


#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())中没有名字. 怎么可能比较没有名字和vec1vector<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

最新更新