初始化后在 C++ 上设置数组大小

set array size on c++ after initialization

本文关键字:数组 设置 C++ 初始化      更新时间:2023-10-16
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