// generate_n.cpp -- 2011-09-30-22.37
#include "stdafx.h"
#include <iostream>
#include <algorithm>
#include <vector>
using std ::vector ;
template<class T>
class Gen
{
private:
T m_seed ;
public:
Gen (const T & t)
{
m_seed = t ;
}
T operator () (void)
{
return ++m_seed ;
}
} ;
class Print
{
public:
void operator () (int val)
{
std ::cout << val << " " ;
}
} ;
int _tmain(int argc, _TCHAR* argv[])
{
int arr1[] = {1, 2, 3, 4, 5, 6, 7, 8, 9} ;
vector<int> vec1(arr1, arr1 + sizeof arr1 / sizeof (int)) ;
// generate_n (dest, cnt, Gen) ;
// 操作前[dest,...)是输出序列.Gen是值发生器.cnt是值发生器调用的次数.
// 操作后:对Gen进行cnt次调用.将这cnt个返回的值写到输出序列中前cnt个位置.
// 返回值:无.
// 备注: [dest,...)必须能够存储至少cnt个值.否则将抛出异常.
generate_n(vec1.begin(), 9, Gen<int>(100)) ;
for_each(vec1.begin(), vec1.end(), Print()) ;
std ::cin.get() ;
return 0 ;
}