在C ++中初始化一个向量类成员

时间:2016-11-10 23:39:52

标签: c++ vector initializer

我试图设置长度并初始化类的向量成员。但似乎唯一可能的是,初始化行是不合适的。 你喜欢哪个 ? (感谢)

//a vector, out of class set size to 5. initilized each value to Zero
vector<double> vec(5,0.0f);//its ok

class Bird{

public:
    int id;
    //attempt to init is not possible if a vector a class of member
    vector<double> vec_(5, 0.0f);//error: expected a type specifier
}

3 个答案:

答案 0 :(得分:6)

使用Member Initializer List

class Bird{

public:
    int id;
    vector<double> vec_;

    Bird(int pId):id(pId), vec_(5, 0.0f)
    {
    }
}

这对于初始化缺少默认构造函数的基类以及在构造函数体执行之前你想要构造的任何其他东西也很有用。

答案 1 :(得分:4)

正如Franck所述,初始化类成员向量的现代c ++方法是

vector<double> vec_ = vector<double>(5, 0.0f);//vector of size 5, each with value 0.0

请注意,对于int,float,double等向量(内置类型为AKA),我们不需要将其初始化为零。因此,更好的方法是

vector<double> vec_ = vector<double>(5);//vector of size 5, each with value 0.0

答案 2 :(得分:1)

如果您使用的是C ++ 11或更高版本,则应阅读http://en.cppreference.com/w/cpp/language/data_members。对于C ++ 98/03,@ user4581301的答案是最好的方法。