]>
Commit | Line | Data |
---|---|---|
1e59de90 TL |
1 | #include <boost/iterator/transform_iterator.hpp> |
2 | #include <boost/container/vector.hpp> | |
3 | #include <boost/container/list.hpp> | |
4 | #include <boost/container/slist.hpp> | |
5 | #include <boost/core/lightweight_test.hpp> | |
6 | ||
7 | using namespace boost::container; | |
8 | ||
9 | struct func | |
10 | { | |
11 | typedef int result_type; | |
12 | int operator()(const int i) const | |
13 | { return i*2; } | |
14 | }; | |
15 | ||
16 | int main() | |
17 | { | |
18 | const std::size_t N = 10u; | |
19 | func f; | |
20 | slist<int>s(N); | |
21 | list<int>l(N); | |
22 | vector<int>v(N); | |
23 | ||
24 | vector<int>v2; | |
25 | v2.insert(v2.end(), boost::make_transform_iterator(s.begin(), f), boost::make_transform_iterator(s.end(), f)); | |
26 | v2.insert(v2.end(), boost::make_transform_iterator(l.begin(), f), boost::make_transform_iterator(l.end(), f)); | |
27 | v2.insert(v2.end(), boost::make_transform_iterator(v.begin(), f), boost::make_transform_iterator(v.end(), f)); | |
28 | ||
29 | v2.assign(boost::make_transform_iterator(s.begin(), f), boost::make_transform_iterator(s.end(), f)); | |
30 | v2.assign(boost::make_transform_iterator(l.begin(), f), boost::make_transform_iterator(l.end(), f)); | |
31 | v2.assign(boost::make_transform_iterator(v.begin(), f), boost::make_transform_iterator(v.end(), f)); | |
32 | ||
33 | { | |
34 | //slist | |
35 | boost::transform_iterator<func, slist<int>::iterator> | |
36 | ti(s.begin()), ti2(s.end()), ti3(ti); | |
37 | boost::intrusive::iterator_uadvance(ti3, v.size()); | |
38 | BOOST_TEST(ti3 == ti2); | |
39 | } | |
40 | { | |
41 | //list | |
42 | boost::transform_iterator<func, list<int>::iterator> | |
43 | ti(l.begin()), ti2(l.end()), ti3(ti); | |
44 | boost::intrusive::iterator_uadvance(ti3, v.size()); | |
45 | BOOST_TEST(ti3 == ti2); | |
46 | } | |
47 | { | |
48 | //vector | |
49 | boost::transform_iterator<func, vector<int>::iterator> | |
50 | ti(v.begin()), ti2(v.end()), ti3(ti); | |
51 | boost::intrusive::iterator_uadvance(ti3, v.size()); | |
52 | BOOST_TEST(ti3 == ti2); | |
53 | } | |
54 | return boost::report_errors(); | |
55 | } | |
56 |