She*_*lef 5 c++ arrays constructor
如何将没有特定大小的数组声明为类成员?我想在类构造函数中立即设置此数组的大小.是否可以在不使用堆或不调整数组大小的情况下执行此类操作?
C++标准不允许使用可变长度数组.你有的选择是:
std::vector或请注意,大多数编译器都支持可变长度数组作为扩展,因此,如果您不担心可移植性并且编译器支持它,则可以使用它.当然,它有自己的问题,但考虑到你所引用的限制,它是一个选择.
C++要求在编译时知道自动存储阵列的大小,否则必须动态分配数组.所以你需要在某种程度上进行动态分配,但你不必担心直接这样做:只需使用std::vector:
#include <vector>
class Foo
{
public:
Foo() : v_(5) {}
private:
std::vector<int> v_;
};
Run Code Online (Sandbox Code Playgroud)
这里,v_是一个矢量保持ints,并被构造成具有大小5.向量负责动态分配.
在C++ 14中,您可以选择使用std::dynarray,这非常类似std::vector,除了它的大小在构造中是固定的.这与纯动态分配的阵列功能更加匹配.
| 归档时间: |
|
| 查看次数: |
28586 次 |
| 最近记录: |