利用FIN()函数实现矢量在C++中的矢量

因此,我试图使用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列表保持给定状态,并且您有一个编译错误

发表评论