Boost C++ Libraries Home Libraries People FAQ More

PrevUpHomeNext

The Shared Container Iterator Object Generator

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.

Example

This example, similar to the previous, uses make_shared_container_iterator() to create the iterators.

shared_iterator_example2.cpp:

#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.


PrevUpHomeNext