#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;
}
运行时总是出现
这个提示,是为什么啊 ,百度了一下这个问题,但也没有确实的回答,这里发个帖子给聊聊这个问题啊