Commit 8e894b70fa4f07dd2bb0f84c361364ae1697d23b
1 parent
121e73b8
Added foreach example
Showing
18 changed files
with
71 additions
and
0 deletions
examples09/02-iterator/foreach.cpp
0 → 100644
1 | +#include <stddef.h> | ||
2 | +#include <iostream> | ||
3 | + | ||
4 | +class Iterator; | ||
5 | + | ||
6 | +class Collection | ||
7 | +{ | ||
8 | + static const size_t size = 10; | ||
9 | + int data[size]; | ||
10 | + using iterator = Iterator; | ||
11 | + friend class Iterator; | ||
12 | +public: | ||
13 | + Iterator begin(); | ||
14 | + Iterator end(); | ||
15 | +}; | ||
16 | + | ||
17 | +class Iterator | ||
18 | +{ | ||
19 | + int i; | ||
20 | + Collection* c; | ||
21 | +public: | ||
22 | + Iterator(int ii, Collection* cc) : i(ii), c(cc){}; | ||
23 | + int& operator *() | ||
24 | + { | ||
25 | + return c->data[i]; | ||
26 | + } | ||
27 | + Iterator& operator++() | ||
28 | + { | ||
29 | + ++i; | ||
30 | + return *this; | ||
31 | + } | ||
32 | + bool operator!=(const Iterator& o) | ||
33 | + { | ||
34 | + return i != o.i; | ||
35 | + } | ||
36 | + | ||
37 | +}; | ||
38 | + | ||
39 | +Iterator Collection::begin() | ||
40 | +{ | ||
41 | + return Iterator(0,this); | ||
42 | +} | ||
43 | + | ||
44 | +Iterator Collection::end() | ||
45 | +{ | ||
46 | + return Iterator(Collection::size-1,this); | ||
47 | +} | ||
48 | + | ||
49 | +int main() | ||
50 | +{ | ||
51 | +Collection c; | ||
52 | + | ||
53 | +int a = 3; | ||
54 | + | ||
55 | +for(auto& i: c) | ||
56 | + i = a++; | ||
57 | + | ||
58 | +for(auto i: c) | ||
59 | + std::cout << i << std::endl; | ||
60 | + | ||
61 | +} | ||
62 | + | ||
63 | + | ||
0 | \ No newline at end of file | 64 | \ No newline at end of file |
examples09/02-iterator/makefile
0 → 100644
examples09/02-algorithm/algo1.cpp renamed to examples09/03-algorithm/algo1.cpp
examples09/02-algorithm/algo2.cpp renamed to examples09/03-algorithm/algo2.cpp
examples09/02-algorithm/makefile renamed to examples09/03-algorithm/makefile
examples09/03-functionobject/fun1.cpp renamed to examples09/04-functionobject/fun1.cpp
examples09/03-functionobject/fun2.cpp renamed to examples09/04-functionobject/fun2.cpp
examples09/03-functionobject/fun3.cpp renamed to examples09/04-functionobject/fun3.cpp
examples09/03-functionobject/makefile renamed to examples09/04-functionobject/makefile
examples09/04-unordered_set/employee.h renamed to examples09/05-unordered_set/employee.h
examples09/04-unordered_set/makefile renamed to examples09/05-unordered_set/makefile
examples09/04-unordered_set/unordered_set.cpp renamed to examples09/05-unordered_set/unordered_set.cpp
examples09/05-closures/fun1.cpp renamed to examples09/06-closures/fun1.cpp
examples09/05-closures/fun2.cpp renamed to examples09/06-closures/fun2.cpp
examples09/05-closures/fun3.cpp renamed to examples09/06-closures/fun3.cpp
examples09/05-closures/fun4.cpp renamed to examples09/06-closures/fun4.cpp
examples09/05-closures/fun5.cpp renamed to examples09/06-closures/fun5.cpp
examples09/05-closures/makefile renamed to examples09/06-closures/makefile