создать n с конструктором, который принимает два аргумента

Привет Я пытаюсь сделать следующее:

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

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

Как я могу "доставить" два аргумента startValue и функтор rand?

спасибо

1 ответов


поскольку генератор является объектом функции, вы можете создать генератор и аргументировать его конструктору:

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 для вычисления следующих параметров для создания объекта.