如何为二维字符串动态分配内存,如下所示。
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中的值。
不要忘记改变大小的成员功能。