C++ 泛函数

一名CV界的小学生 2017-11-12 07:59:45
#include<string>
#include<vector>
#include<functional>
#include<algorithm>
using namespace std;


template<typename inputiterator,typename outputiterator,typename elemtype,typename comp>
outputiterator
filter(inputiterator first, inputiterator last, outputiterator at, const elemtype &val, comp pred)
{
while ((first = find_if(first, last, bind2nd(pred, val))) != last)
{
cout << "found value:" << *first << endl;
*at++ = *first++;
}
return at;
}
int main()
{
const int asize = 10;
int ia[asize] = { 23, 56, 14, 21, 15, 16, 17, 18, 19, 54 };
vector<int>vec(ia, ia + asize);
vector<int>ivec;

int ia2[asize];

cout << "filtering integer array for lessthan 20:" << endl;
filter(ia, ia+asize,ia2,20, greater<int>());

cout << "filtering iteger vector for lessthan 20:" << endl;
filter(vec.begin(), vec.end(), ivec.begin(), 20, greater<int>());

return 0;
}

运行时总是出现

这个提示,是为什么啊 ,百度了一下这个问题,但也没有确实的回答,这里发个帖子给聊聊这个问题啊
...全文
269 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
paschen 2017-11-12
  • 打赏
  • 举报
回复
ivec中初始就没有为元素分配空间你就*at去赋值
  • 打赏
  • 举报
回复
这个问题已解决

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧