| 
									
										
										
										
											2004-02-02 22:16:36 +00:00
										 |  |  | // Copyright 2003 The Trustees of Indiana University.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Use, modification and distribution is subject to the Boost Software 
 | 
					
						
							|  |  |  | // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
 | 
					
						
							|  |  |  | // http://www.boost.org/LICENSE_1_0.txt)
 | 
					
						
							| 
									
										
										
										
											2002-09-05 14:05:29 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | #include "boost/shared_container_iterator.hpp"
 | 
					
						
							|  |  |  | #include "boost/shared_ptr.hpp"
 | 
					
						
							|  |  |  | #include "boost/tuple/tuple.hpp" // for boost::tie
 | 
					
						
							|  |  |  | #include <algorithm>              // for std::copy
 | 
					
						
							|  |  |  | #include <iostream>              
 | 
					
						
							|  |  |  | #include <vector>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-11 16:29:47 +00:00
										 |  |  | typedef boost::shared_container_iterator< std::vector<int> > iterator; | 
					
						
							| 
									
										
										
										
											2002-09-05 14:05:29 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-11 16:29:47 +00:00
										 |  |  | std::pair<iterator,iterator> | 
					
						
							| 
									
										
										
										
											2002-09-05 14:05:29 +00:00
										 |  |  | return_range() { | 
					
						
							|  |  |  |   boost::shared_ptr< std::vector<int> > range(new std::vector<int>()); | 
					
						
							|  |  |  |   range->push_back(0); | 
					
						
							|  |  |  |   range->push_back(1); | 
					
						
							|  |  |  |   range->push_back(2); | 
					
						
							|  |  |  |   range->push_back(3); | 
					
						
							|  |  |  |   range->push_back(4); | 
					
						
							|  |  |  |   range->push_back(5); | 
					
						
							|  |  |  |   return boost::make_shared_container_range(range); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int main() { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-11 16:29:47 +00:00
										 |  |  |   iterator i,end; | 
					
						
							| 
									
										
										
										
											2002-09-05 14:05:29 +00:00
										 |  |  |    | 
					
						
							|  |  |  |   boost::tie(i,end) = return_range(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   std::copy(i,end,std::ostream_iterator<int>(std::cout,",")); | 
					
						
							|  |  |  |   std::cout.put('\n'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   return 0; | 
					
						
							|  |  |  | } |