带有两个参数的构造函数的generate_n

mel*_*bic 6 c++ constructor

嗨,我正在尝试执行以下操作:

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

int startValue = 10;
vector<A> v;
generate_n(back_inserter(v), 10, ???;
Run Code Online (Sandbox Code Playgroud)

我怎样才能"传递"两个参数startValue和functor rand?

谢谢

Dou*_* T. 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));
Run Code Online (Sandbox Code Playgroud)

然后每次生成时都可以使用startValue和rand来计算用于构造A对象的下一个参数.