2011-01-27 87 views
6

嗨 我试图做到以下几点:generate_n与构造函数需要两个参数

struct A { 
A(int i, int j){} 
} 

int startValue = 10; 
vector<A> v; 
generate_n(back_inserter(v), 10, ???; 

我怎样才能“实现”两个参数在startValue和函子兰特?

谢谢

回答

10

由于发电机是一个函数对象,你可以实例化生成器和它的构造函数提供的参数:

class MyGenerator 
{ 
private: 
    int startValue; 
public: 
    MyGenerator(int startValue): startValue(startValue) {} 

    // generate an instance of A 
    A operator()() 
    { 
     return A(startValue, rand()); // or whatever you were planning to do here...     
    } 
}; 

... 
//down in your code (added Fred's sugestion) 
generate_n(back_inserter(v), 10, MyGenerator(startValue)); 

然后每次生成你可以使用在startValue和RAND计算时间接下来用来构造A对象的参数。

+0

啊... shikes,打我的时刻...我会删除我的... – Nim 2011-01-27 16:57:03

相关问题