2010-02-21 49 views
0

可能重複:
C++: Easiest way to initialize an STL vector with hardcoded elements如何簡潔地初始化C++中的安全集合?

我學習C++,現在,我正在尋找一種方式來快速,輕鬆地初始化一個「安全」的集合(如矢量)爲每個元素使用不同的值。我習慣於Python簡潔的列表/元組初始化,並且我想知道在C++中是否有等價的語法技巧或集合類型。

例如,如果我要初始化Python中唯一的支付對象的列表,我可以這樣做:

payments = [Payment(10, 2), Payment(20, 4), Payment(30, 6)] 

然而,爲了初始化C++支付結構的載體,我需要寫這樣的事情:

Payment tempPayments[] = { 
    {10, 2}, 
    {20, 4}, 
    {30, 6} 
}; 
vector<Payment> examplePayments(tempPayments, tempPayments + 
    sizeof(tempPayments)/sizeof(Payment)); 

有沒有一種更簡單的方法來初始化一個獨特的結構,或另一個更安全的集合,更方便嗎?

+4

許多受騙者包括http://stackoverflow.com/questions/2236197/c-easiest-way-to-initialize-an-stl-vector- with-hardcoded-elements – 2010-02-21 20:05:14

+0

Neil的權利;顯然,我已經在使用最簡單的方法(沒有Boost)。 – 2010-02-21 20:11:19

回答

3

查看Boost.Assign,特別是list_of。它允許你使用代碼來初始化集合,如:

const vector<int> primes = list_of(2)(3)(5)(7)(11);