初始化后在 C++ 上设置数组大小
set array size on c++ after initialization
class foo{
private:
int map[SCENE_WIDTH * SCENE_HEIGHT];
}
问题是我还不知道场景宽度,我想做这样的事情:
int map[];
void setSize(int s){
map[5];
}
我知道这样做的唯一方法是做 int *map,然后 map = new int[3],但随后我将使用动态内存,稍后我必须删除它。如何像"第一种方法"那样做?
在标准C++中无法像这样调整数组的大小。
请改用std::vector
. 例如;
#include <vector>
class foo
{
public:
foo(std::size_t size = 0) : map(size) {}; // initialises number of elements in map
void resize(std::size_t size)
{
map.resize(size);
};
private:
std::vector<int> map;
};
当 foo
类型的对象被销毁时,将隐式销毁包含的vector<int>
,并将释放它已分配的所有资源。
除了std::vector
之外,还有其他容器可以满足特定需求,但在实践中std::vector
是一个不错的默认选择。
int map[SIZE];
在 堆栈上分配,并且必须在编译时知道此数组的大小,并且必须在此变量的声明中提及,否则语法map[5];
将被视为提取此数组的第六个值。
总而言之,你不能那样做,但你可以为此目的使用std::vector
。
相关文章:
- 我如何处理有关输入的字符串大小超过字符数组设置大小的错误?
- 将字符数组设置为彼此相等的方法不起作用
- 将数组设置在一个对象中,等于另一个对象中的数组
- C++ |如何将整个 2d 数组设置为 O
- 将 2D 数组设置为函数,并根据需要在其他地方调用它
- 使用C 11将数组设置为零
- 将数组设置为包含字符串值会导致错误
- 将数字动态数组设置为数组或容器 c++
- 将对象的数组设置为c 中的null
- 在此初始值设定项方法上将整个数组设置为 NULL 是否C++标准?
- 将结构中的字符串数组设置为函数中的us
- C++如何将整个字符数组设置为空格
- 使用 *指针数组C++设置构造函数和析构函数
- 如何将可变大小的静态数组设置为用 0 填充
- 将double-all的二维数组设置为-1的最快方法
- 使用memset将字符串数组设置为0后,该数组不可用
- 在C++中将多维数组设置为向量
- 将浮点数数组设置为相同值的最快方法
- 为什么使用 'new' 创建的数组设置为 NULL?
- c++使用数组设置交集和并集