2013-11-23 43 views
0

如何动态分配二维字符串的内存如下。为多维字符串动态分配内存

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

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

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

你可以使用std:vector吗? – dchhetri

回答

1

(当你在结构c声明风格的数组在编译将分配空间为他们结构内)的第一个不需要内存分配。

第二个是相当标准的二维数组。

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

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

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

第3步:重写2-demention操作符[],将2D下标映射到std :: vector大小;

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

不要忘了成员函数来改变大小。