你好
我正在尝试执行以下操作:
struct A {
A(int i, int j){}
}
int startValue = 10;
vector<A> v;
generate_n(back_inserter(v), 10, ???;
如何“传递”两个参数startValue和functor rand?
谢谢
最佳答案
由于生成器是一个函数对象,因此您可以实例化生成器并向其构造函数提供参数:
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对象的参数。
关于c++ - 带构造函数的generate_n,它带有两个参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4819261/