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
7using namespace boost::container;
8
9struct func
10{
11 typedef int result_type;
12 int operator()(const int i) const
13 { return i*2; }
14};
15
16int 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(pos: v2.end(), first: boost::make_transform_iterator(it: s.begin(), fun: f), last: boost::make_transform_iterator(it: s.end(), fun: f));
26 v2.insert(pos: v2.end(), first: boost::make_transform_iterator(it: l.begin(), fun: f), last: boost::make_transform_iterator(it: l.end(), fun: f));
27 v2.insert(pos: v2.end(), first: boost::make_transform_iterator(it: v.begin(), fun: f), last: boost::make_transform_iterator(it: v.end(), fun: f));
28
29 v2.assign(first: boost::make_transform_iterator(it: s.begin(), fun: f), last: boost::make_transform_iterator(it: s.end(), fun: f));
30 v2.assign(first: boost::make_transform_iterator(it: l.begin(), fun: f), last: boost::make_transform_iterator(it: l.end(), fun: f));
31 v2.assign(first: boost::make_transform_iterator(it: v.begin(), fun: f), last: boost::make_transform_iterator(it: v.end(), fun: 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(it&: ti3, n: 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(it&: ti3, n: 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(it&: ti3, n: v.size());
52 BOOST_TEST(ti3 == ti2);
53 }
54 return boost::report_errors();
55}
56
57

source code of boost/libs/container/test/boost_iterator_comp_test.cpp