Kur*_*kay 2 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
}
Run Code Online (Sandbox Code Playgroud)
使用成员初始化列表
class Bird{
public:
int id;
vector<double> vec_;
Bird(int pId):id(pId), vec_(5, 0.0f)
{
}
}
Run Code Online (Sandbox Code Playgroud)
这对于初始化缺少默认构造函数的基类以及在构造函数体执行之前您宁愿构造的任何其他内容也很有用.
正如 Franck 提到的,初始化类成员向量的现代 C++ 方式是
vector<double> vec_ = vector<double>(5, 0.0f);//vector of size 5, each with value 0.0
Run Code Online (Sandbox Code Playgroud)
请注意,对于 int、float、double 等向量(在内置类型中也称为),我们不需要零初始化。所以更好的方法是
vector<double> vec_ = vector<double>(5);//vector of size 5, each with value 0.0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2683 次 |
| 最近记录: |