![]() |
Home | Libraries | People | FAQ | More |
template <typename Container> shared_container_iterator<Container> make_shared_container_iterator(Container::iterator base, boost::shared_ptr<Container> const& container)
This function provides an alternative to directly constructing a shared_container_iterator
. Using the
object generator, a shared_container_iterator
can be created and passed to a function without explicitly specifying its
type.
This example, similar to the previous, uses make_shared_container_iterator()
to create the iterators.
#include "shared_container_iterator.hpp" #include "boost/shared_ptr.hpp" #include <algorithm> #include <iterator> #include <iostream> #include <vector> template <typename Iterator> void print_range_nl (Iterator begin, Iterator end) { typedef typename std::iterator_traits<Iterator>::value_type val; std::copy(begin,end,std::ostream_iterator<val>(std::cout,",")); std::cout.put('\n'); } int main() { typedef boost::shared_ptr< std::vector<int> > ints_t; { ints_t ints(new std::vector<int>()); ints->push_back(0); ints->push_back(1); ints->push_back(2); ints->push_back(3); ints->push_back(4); ints->push_back(5); print_range_nl(boost::make_shared_container_iterator(ints->begin(),ints), boost::make_shared_container_iterator(ints->end(),ints)); } return 0; }
Observe that the shared_container_iterator
type is never explicitly named. The output from this example is the same
as the previous.