-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfunctor.cpp
44 lines (39 loc) · 1.01 KB
/
functor.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// functor.cpp -- using a functor
#include <iostream>
#include <list>
#include <iterator>
template<class T> // functor class defines operator()
class TooBig
{
private:
T cutoff;
public:
TooBig(const T & t) : cutoff(t) {}
bool operator()(const T & v) { return v > cutoff; }
};
int main()
{
using std::list;
using std::cout;
using std::endl;
TooBig<int> f100(100); // limit = 100
list<int> yadayada;
list<int> etcetera;
int vals[10] = {50, 100, 91, 180, 60, 210, 415, 88, 188, 201};
yadayada.insert(yadayada.begin(), vals, vals + 10);
etcetera.insert(etcetera.begin(), vals, vals + 10);
std::ostream_iterator<int, char> out(cout, " ");
cout << "Original lists:\n";
copy(yadayada.begin(), yadayada.end(), out);
cout << endl;
copy(etcetera.begin(), etcetera.end(), out);
cout << endl;
yadayada.remove_if(f100);
etcetera.remove_if(TooBig<int>(200));
cout << "Trimmed lists:\n";
copy(yadayada.begin(), yadayada.end(), out);
cout << endl;
copy(etcetera.begin(), etcetera.end(), out);
cout << endl;
return 0;
}