函数模板,绑定适配器

deadoggy 2015-02-10 11:06:27
最近在看essential c++,上面有一段代码,函数模板是书上的,int main是我自己写的
#include<iostream>
#include<algorithm>
#include<functional>
#include<vector>
using namespace std;

template < typename InputIterator, typename OutputIterator,
typename ElemType, typename Comp >
OutputIterator
filter( InputIterator first, InputIterator last,
OutputIterator To , const ElemType &val, Comp pred )
{
while ( ( first = find_if ( first, last, bind1st(val,pred) ) ) != last )
{
cout << *first << '\n';
*To++ = *first++;
}
return To;
}

int main()
{
const int size=8;
int num[size]={1,2,2,3,4,5,6,7};
vector<int> number(num,num+size);
vector<int> number2(size);
int num2[size];
filter ( number.begin(), number.end(), number2.begin(), 3, less<int>());
filter ( number.begin(), number.end(), num2, 3, greater<int>() );
for(vector<int>::iterator itr = number2.begin(); itr!=number2.end(); itr++)
cout << *itr << '\n';

for(int *i=num2; i!=num2+size; i++)
cout << *i << '\n';

return 0;
}


结果调试总是不过,程序都run不起来....
求各位神牛给小弟解答解答下....
万分感谢....
...全文
83 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhxi55 2015-02-11
  • 打赏
  • 举报
回复
//while ((first = find_if(first, last, bind1st(val, pred))) != last) while ((first = find_if(first, last, bind1st(pred, val))) != last)
davidzljw 2015-02-11
  • 打赏
  • 举报
回复
表示不会C++
fly_dragon_fly 2015-02-11
  • 打赏
  • 举报
回复
将bind1st改成 bind(pred,_1,val),现在都统一成bind了,第一个参数是函数

33,311

社区成员

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

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