因此,我试图使用find()函数检查向量的向量中是否存在向量,但leetcode编辑器显示编译错误
#包括<;iostream>;
#包括<;向量>;
#包括<;算法>;
int main()
{
std::vector<;std::vector<;int>;>;res{{{1,2,3};
if(std::find(res.begin(),res.end(),{1,-1,0})=res.end())
res.push_back({1,-1,0});
}
调用find时必须提到向量类型:
\include<;iostream>;
#包括<;向量>;
#包括<;算法>;
int main()
{
std::vector<;std::vector<;int>;>;res{{{1,2,3};
if(res.end()!=std::find(
res.begin(),res.end(),std::vector<;int>;{1,2,3})
//仅使用初始值设定项列表是不够的^^^。在您的代码中使用
//{nums[i],nums[j],nums[k]}没有提到要构造的类型
{
std::cout“在res\n”中存在向量{1,2,3}”;;
}
}
这样就行了
您得到的编译错误可能是
错误:没有用于调用的匹配函数
查找(std::vector<;std::vector<;int>;::迭代器,
std::vector<;std::vector<;int>;::迭代器,
<;括号内的初始值设定项列表>;)
i、 e.find方法获得一个简单的初始值设定项列表
TL;医生警告:
之所以如此,是因为在finditerator和value中有不同的类型:
模板<;类别输入,类别T>;
输入查找(先输入、后输入、常量和值);
因此,即使在推导了迭代器的类型之后,编译器也不能对值的类型做出任何假设。结果是,即使向量可以从初始值设定项列表构造,编译器也不知道要构造什么类型(它只知道它推导的类型)。因此,init列表保持给定状态,并且您有一个编译错误