问题遇到的现象和发生背景
我想要通过仿函数和for_each()实现查找的功能。(即通过回调函数返回拿到迭代器)
遇到的现象和发生背景,请写出第一个错误信息
错误 C2664 “void mysearch::operator ()(std::vector<int,std::allocator>)”: 无法将参数 1 从“int”转换为“std::vector<int,std::allocator>”
用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
class mysearch
{
public:
void operator()(vector<int>v) {
it = v.begin();
for (; it != v.end(); ++it)
{
if (*it == 4)
break;
}
}
public:
vector<int>::iterator it;
};
int main()
{
vector<int>v;
for (int i = 0; i < 10; ++i)
v.push_back(i);
mysearch search;
search = for_each(v.begin(), v.end(), mysearch());
cout << *(search.it) << endl;
return 0;
}
运行结果及详细报错内容
错误 C2664 “void mysearch::operator ()(std::vector<int,std::allocator>)”: 无法将参数 1 从“int”转换为“std::vector<int,std::allocator>”
我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%
源码:
template <class _InIt, class _Fn>
_CONSTEXPR20 _Fn for_each(_InIt _First, _InIt _Last, _Fn _Func) { // perform function for each element [_First, _Last)
_Adl_verify_range(_First, _Last);
auto _UFirst = _Get_unwrapped(_First);
const auto _ULast = _Get_unwrapped(_Last);
for (; _UFirst != _ULast; ++_UFirst) {
_Func(*_UFirst);
本来仿函数是这样写的,我想要通过仿函数和for_each()实现查找的功能,改成上面提问的代码块后还是不可以。
class mysearch
{
public:
vector<int>::iterator operator()(vector<int>v){
vector<int>::iterator it=v.begin();
for(;it!=v.end();++it)
{
if(*it==4)
return it;
}
}
};
我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”
我想要通过仿函数和for_each()实现查找的功能。(即通过回调函数返回拿到迭代器)