CArray如何实现二维问题
CArray<CString,CString>m_string;typedefCArray<CString,CString>m_bigSting;CArray<m_big...
CArray<CString,CString> m_string;
typedef CArray<CString,CString> m_bigSting;
CArray<m_bigSting,m_bigSting>allString;
CString sztiger("tiger");
CString szbear("bear");
CString szdog("dog");
m_string.Add(sztiger);
m_string.Add(szdog);
m_string.Add(szbear);
allString.Add(m_string);//这一句报错???
我想问的是CArray实现的二维数组如何去访问,如何去添加元素??? 展开
typedef CArray<CString,CString> m_bigSting;
CArray<m_bigSting,m_bigSting>allString;
CString sztiger("tiger");
CString szbear("bear");
CString szdog("dog");
m_string.Add(sztiger);
m_string.Add(szdog);
m_string.Add(szbear);
allString.Add(m_string);//这一句报错???
我想问的是CArray实现的二维数组如何去访问,如何去添加元素??? 展开
1个回答
展开全部
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);
//但是注意,最好是用一维数组去实现,因为以上,也是有局限性的。换种思维,一维数组也是可以实现的。
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);
//但是注意,最好是用一维数组去实现,因为以上,也是有局限性的。换种思维,一维数组也是可以实现的。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
AiPPT
2024-09-19 广告
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图...
点击进入详情页
本回答由AiPPT提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询