转自百度知道:https://zhidao.baidu.com/question/1760117839348338628.html
转自:司马刀剑 来自电脑网络类芝麻团 2018-05-29
关于如何利用CArray实现不确定长度二维数组CStringArray
CArray <CString,CString&> m_string;//实现一个类似CStringArray的类
typedef CArray<CString,CString&> m_bigSting;//为构建大的数组做准备
CArray<m_bigSting*,m_bigSting*>allString;//等同于 CArray<CStringArray,CStringArray>allString;**
接下来的操作就是一样的啦!
//添加字符串到对象数组
m_string.Add(sztiger);
m_string.Add(szdog);
m_string.Add(szbear);
CArray<CStringArray*,CStringArray*>allString;//重要,添加数组的数组
allString.Add(&m_string); //注意取地址
MessageBox((allString.GetAt(0))->GetAt(1)); //访问二维数组的方法
这样做的好处,你可以实现任何的你想要的数组了,比如说:CFloatArray并没有这个类,但是你可以自己构建
CArray <float,float&> m_float;
typedef CArray <float,float&> m_bigFloat;
CArray<m_bigFloat*,m_bigFloat*>allFloat;
通过这三部,不就建立了一个二维的浮点数数组吗?更准确的说应该是集合!
下面是一个具体的例子:
CArray <float,float&> m_float;
CArray <float,float&> m_float2;
typedef CArray <float,float&> m_bigFloat;
CArray<m_bigFloat*,m_bigFloat*>allFloat;
float i1 = 3.14;
float i2 = 5.8;
float i3 = 999;
m_float.Add(i1);
m_float.Add(i2);
m_float.Add(i3);
float i4 = 89.14;
float i5 = 45.8;
float i6 = 789;
m_float2.Add(i4);
m_float2.Add(i5);
m_float2.Add(i6);
allFloat.Add(&m_float);
allFloat.Add(&m_float2);
CString temtri;
//注意这个_T()不能掉,不然出错
temtri.Format(_T("%f"),allFloat.GetAt(1)->GetAt(2));
MessageBox(temtri);
//但是注意,最好是用一维数组去实现,因为以上,也是有局限性的。换种思维,一维数组也是可以实现的。