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

时间:2013-11-23 03:54:17

标签: c++

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

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

如何动态分配以下内存?

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

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

步骤3:覆盖2-demention operator [],将2D下标映射到std :: vector size;

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

不要忘记改变大小的成员函数。