//printutil.hpp
#ifndef __PRINTUTIL_HPP__
#define __PRINTUTIL_HPP__
#include <iostream>
template<typename T>
inline void PRINT_ELEMENTS(const T& col, const char* optctr="")
{
typename T::const_iterator pos;
std::cout<< optctr ;
for (pos = col.begin(); pos != col.end(); ++pos)
{
cout<< *pos << ' ';
}
std::cout<<std::endl;
}
#endif//__PRINTUTIL_HPP__
调用:
#include "printutil.hpp"
#include <list>
#include <algorithm>
using namespace std;
class IntSequence{
public:
IntSequence(int init_value) : value_(init_value){}
int operator()(){return value_++;}//operator()()
private:
int value_;
};
int _tmain(int argc, _TCHAR* argv[])
{
list<int> li;
IntSequence seq(1);
//generate_n
generate_n<back_insert_iterator<list<int> >, int, IntSequence&>(back_inserter(li), 4, seq);
PRINT_ELEMENTS(li);
//
generate_n(back_inserter(li), 4, IntSequence(20));
PRINT_ELEMENTS(li);
//
generate_n(back_inserter(li), 4, seq);
PRINT_ELEMENTS(li);
return 0;
}