2011-01-27 47 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

相關問題