为多维字符串动态分配内存



如何为二维字符串动态分配内存,如下所示。

struct sample {
    int i;
    std::string arrray [10][10];
};

如何为下面的一个动态分配内存?

struct sample {
    int i;
    std::string **arrray;
};

第一个不需要内存分配(当你在结构中声明C风格的数组时,编译会在结构中为它们分配空间)。

第二个是相当标准的2D阵列。

arrray = new string*[10];
for (int i = 0; i < 10; i++)  
    arrray[i] = new string [10];  

步骤1:使用std::vector保存字符串指针;

步骤2:使用您自己定义的类(向量容器)来封装向量;

步骤3:覆盖二维运算符[],将二维下标映射到std::向量大小;

步骤4:现在的问题是,如何操作2D下标?您可以定义另一个"朋友类",向量容器的[]返回一个朋友类,朋友类还有一个[],它返回std::vector中的值。

不要忘记改变大小的成员功能。

最新更新