如何在C ++中简明地初始化安全集合?

时间:2010-02-21 19:59:19

标签: c++ list collections vector

  

可能重复:
  C++: Easiest way to initialize an STL vector with hardcoded elements

我正在学习C ++,我正在寻找一种方法来快速轻松地初始化每个元素具有不同值的“安全”集合(如矢量)。我已经习惯了Python的简洁列表/元组初始化,我想知道C ++中是否存在等效的语法技巧或集合类型。

例如,如果我想在Python中初始化唯一的Payment对象列表,我可以这样做:

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

但是,为了在C ++中初始化Payment结构的向量,我需要写这样的东西:

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

是否有更简单的方法来初始化具有独特结构的矢量,或者更方便的另一个安全集合?

1 个答案:

答案 0 :(得分:3)

查看Boost.Assign,特别是list_of。它允许您使用以下代码初始化集合:

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