我试图弄清楚如何在构造函数的初始化列表中声明一个任意大小的数组。如果这是不可能的,我应该怎么做?
例如:
class vectorOfInt
{
public:
private:
int _size;
int _vector[];
};
vectorOfInt::vectorOfInt()
:_size(32),
_vector(size)
{
}
基本上,我希望将数组 _vector 初始化为大小(在本例中为 32)。我怎么做?感谢您的任何意见。
我试图弄清楚如何在构造函数的初始化列表中声明一个任意大小的数组。如果这是不可能的,我应该怎么做?
例如:
class vectorOfInt
{
public:
private:
int _size;
int _vector[];
};
vectorOfInt::vectorOfInt()
:_size(32),
_vector(size)
{
}
基本上,我希望将数组 _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);
}
};