(C ++)创建可以从函数访问的动态全局数组/向量

时间:2017-04-15 11:55:37

标签: c++ arrays vector dynamic size

我正在为地下城游戏编写代码。地牢是一个平方的角色阵列。在实际版本中,数组的大小和敌人的数量等用" #define"声明,但我想稍微改进程序并且让用户设置高度,宽度,敌人数量...... 问题是我不知道如何以用户输入大小的方式声明数组,同时,数组全局并且可以被所有人访问我用(#define)编写的函数。 我对任何不涉及重写所有功能的建议持开放态度。)

**目前,数组的声明是:

    #define WIDTH  20
    #define HEIGHT 20
    char dun[HEIGHT][WIDTH];

**链接到代码:https://github.com/Zashuiba/The-Dungeon-Game/blob/master/Dungeon/Dungeon.cpp

2 个答案:

答案 0 :(得分:0)

#include <vector>

您可能希望使用std::vector类。这是一个快速草案代码:

size_t width = 20;
size_t height = 20;
std::vector< std::vector<char> > dun;

void init_array()
{
    dun.resize(height);
    for (size_t i = 0; i < height; ++i)
        dun[i].resize(width);
}

答案 1 :(得分:0)

使dun成为矢量载体

#include<vector>

std::vector<std::vector<char>> dun; //global variable

//In your input function
input_from_user()
{
    int Height = getHeight();
    int width  = getWidth();
    dun.clear();
    for(int i = 0 ; i < Height ; ++i)
    {
        std::vector<char> createdVector(Width);
        dun.push_back(createdVector);
    }
}

现在你可以使用dun,因为你使用2维元素char数组,因为下标运算符被重载为std :: vector