如何为二维字符串动态分配内存,如下所示。
struct sample {
int i;
std::string arrray [10][10];
};
如何动态分配以下内存?
struct sample {
int i;
std::string **arrray;
};
答案 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中的值。
不要忘记改变大小的成员函数。