小编Dav*_*del的帖子

任意维数组

所以我正在尝试创建一个用于迷宫生成程序的n维数组结构.

我已经简化了我的问题(为了试图在使其理论化并添加所有必要的辅助函数之前弄清楚理论)

所以我的问题目前归结为想要创建一个ArbitraryArray类,该类接受一个指定维数的构造函数的参数.每个维度的长度= 5.(现在)

这是我到目前为止:

class ArbitraryArray{
public:
    int array[5];
    ArbitraryArray*subArray;

    ArbitraryArray(){}

    ArbitraryArray(int depth){
        if (depth == 2) subArray = new ArbitraryArray[5];
        else if (depth > 2) for (int i = 0; i < 5; i++) subArray = new ArbitraryArray(depth - 1);
    }
};
Run Code Online (Sandbox Code Playgroud)

我会像这样创建一个二维对象:

ArbitraryArray testArray(2);
Run Code Online (Sandbox Code Playgroud)

或者像这样的三维物体:

ArbitraryArray testArray(3);
Run Code Online (Sandbox Code Playgroud)

问题是,当我测试深度= 3然后尝试设置整数值时,通过:

testArray.subArray[3].subArray[4].array[4] = 7;
Run Code Online (Sandbox Code Playgroud)

我收到了一个运行时错误,让我相信我在动态分配这些对象方面做错了.

此外,我包含一个空的默认构造函数,因为它被以下行调用:

subArray = new ArbitraryArray[5];
Run Code Online (Sandbox Code Playgroud)

我知道这可能不是创建任意维数组数据结构的最佳方法,但我真的想弄清楚为什么这个实现在寻找更好的方法之前不起作用.

另外我知道我不应该像以下一样:

int array[5];
Run Code Online (Sandbox Code Playgroud)

并且它应该是一个指针,以便在底部维度之上的阵列的所有级别上没有大量浪费的内存分配.在我得到这个基本想法之后,我打算将其修改为.

c++ arrays

2
推荐指数
1
解决办法
1240
查看次数

向量声明

向量大小是动态的,所以为什么这会给出一个seg错误:

#include <iostream>
#include <string>
#include <vector>

using namespace std;

int main(){
    vector<int> vectorOfInts;

    vectorOfInts[0] = 3;
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试实际做的是在类中声明一个向量.

#include <iostream>
#include <string>
#include <vector>

using namespace std;

class Directory{
    public:
        string name;
        int maxIndex;
        vector<Directory> subDirectories;

        void addSubdirectory(string x){
            Directory newSubdirectory(x);
            subDirectories[maxIndex++] = newSubdirectory;
        }

        Directory(string x){
            name = x;
            maxIndex = 0;
        }
};

int main(){
    Directory root("root");
    root.addSubdirectory("games");
}
Run Code Online (Sandbox Code Playgroud)

但这也给出了一个段错误.

c++ vector

0
推荐指数
1
解决办法
83
查看次数

标签 统计

c++ ×2

arrays ×1

vector ×1