2011-01-27 5 views

ответ

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

+0

ah ... shikes, избили меня моментами ... Я удалю мою ... – Nim

+1

generate_n (back_inserter (v), 10, MyGenerator (startValue)); –