构造函数的初始化列表中的数组
Arrays in the initialization list of a constructor
我正试图弄清楚如何在构造函数的初始化列表中声明任意大小的数组。如果这不可能,我该怎么办?
例如:
class vectorOfInt
{
public:
private:
int _size;
int _vector[];
};
vectorOfInt::vectorOfInt()
:_size(32),
_vector(size)
{
}
基本上,我希望将array_vector初始化为大小(在本例中为32)。我该怎么做?感谢您的意见。
使用std::vector
:
#include <vector>
class vectorOfInt
{
public:
private:
int _size; // probably you want to remove this, use _vector.size() instead.
std::vector<int> _vector;
};
vectorOfInt::vectorOfInt()
:_size(32),
_vector(size)
{
}
编辑:由于您不想使用std::vector
,您必须自己处理内存。如果您在编译时知道数组的大小,则可以使用内置数组,但我怀疑情况是否如此。你必须做一些类似的事情:
#include <memory>
class vectorOfInt
{
public:
private:
int _size;
// If C++11 is not an option, use a raw pointer.
std::unique_ptr<int[]> _vector;
};
vectorOfInt::vectorOfInt()
:_size(32),
_vector(new int[size])
{
}
您想要的是使用一个向量,然后使用'reserve'关键字。这将为32个元素分配空间,您可以将它们初始化为您想要的任何内容。
#include<vector>
using namespace std;
class vectorOfInt
{
public:
private:
int _size;
vector<int> _vector;
vectorOfInt()
{
_size = 32;
_vector.reserve(32);
}
};
相关文章:
- C++使用整数的压缩数组初始化对象
- C++17中函数模板中的静态数组初始化(MSVC 2019)
- 从另一个静态常量数组初始化静态常量数组(只需少量计算)
- 在 Python 和 c++ 2d 数组初始化之间.这是怎麽?为什么呢?
- 字节数组初始化会导致 DirectX 崩溃
- 使用 new 和 值进行数组初始化,但没有显式数量的元素
- 运行时C++数组初始化问题
- 使用带有参数包的数组的成员数组初始化类
- 仅通过C++中数组初始化的不同方法,即可在同一输入上获得两个不同的答案
- C++ 2 个指针数组初始化 C2440
- C++结构字符数组初始化
- C++中的多维数组初始化
- constexpr数组初始化
- C++引物动态数组初始化程序的数目超过大小
- 使用std::index_sequence对std::数组初始化进行包扩展
- 当 std 数组初始化太小时,C++会引发错误吗?
- 如何确定结构数组初始化的大小?
- Qt并发错误:数组初始化需要大括号括起来的初始值设定项列表
- 此代码中的数组初始化样式是什么?这是标准的吗?
- C++ 使用数组初始化时的 STL 向量内存管理