急!求用C++编写一个使用结构体数组实现添加,删除,修改,查询功能的程序!在MFC中实现!
就是要做一个电子地图,实现点的添加,删除,修改,查询功能,变量有XY坐标,点的ID,点的name。在MFC中编写,使用结构体数组,数组的容量没有固定值。调用数据通过接口函...
就是要做一个电子地图,实现点的添加,删除,修改,查询功能,变量有XY坐标,点的ID,点的name。在MFC中编写,使用结构体数组,数组的容量没有固定值。调用数据通过接口函数。真心求解答,谢谢大家,急!!!
展开
1个回答
展开全部
直接用MFC 的 CArray就可以了
实例伪代码:
Class MyPoint 或 struct MyPoint
{
XY坐标;
点的ID;
点的NAME:
}
定义数组
CArray<Mypoint,&Mypoint> m_arrMyPoint;
需要动态添加时
MyPoint point;
point.XY坐标 = 某值;
point.点的ID = 某值;
point.点的name = 某值;
添加:
m_arrMyPoint.Add(point);
m_arrMyPoint.InsertAt(位置,point);
删除:
m_arrMyPoint.RemoveAt(位置,删除数量);
修改:
MyPoint newPoint;
m_arrMyPoint.SetAt(位置,newPoint);
或直接赋值:
m_arrMypoint.GetAt(位置).某值 = 新值;
查询:
这个没有现成功能,自己写个条件遍历吧
for(int i=0; i<m_arrMyPoint.GetSize(); i++)
{
if(m_arrMyPoint.GetAt(i).某值 == 某条件)
{
处理代码。。。
}
}
实例伪代码:
Class MyPoint 或 struct MyPoint
{
XY坐标;
点的ID;
点的NAME:
}
定义数组
CArray<Mypoint,&Mypoint> m_arrMyPoint;
需要动态添加时
MyPoint point;
point.XY坐标 = 某值;
point.点的ID = 某值;
point.点的name = 某值;
添加:
m_arrMyPoint.Add(point);
m_arrMyPoint.InsertAt(位置,point);
删除:
m_arrMyPoint.RemoveAt(位置,删除数量);
修改:
MyPoint newPoint;
m_arrMyPoint.SetAt(位置,newPoint);
或直接赋值:
m_arrMypoint.GetAt(位置).某值 = 新值;
查询:
这个没有现成功能,自己写个条件遍历吧
for(int i=0; i<m_arrMyPoint.GetSize(); i++)
{
if(m_arrMyPoint.GetAt(i).某值 == 某条件)
{
处理代码。。。
}
}
更多追问追答
追问
你好,可以稍微详细点吗,是否可以举个真实代码的例子。稍微多一点注释。万分感谢!
追答
其实已经很详细了,CArray这样的工具类是很简单的,根据你的要求,只要掌握Add,InsertAt,SetAt,GetAt,RemoveAt 这几个函数就可以了。
那我稍微再改下:
Class MyPoint 或 struct MyPoint //定义点结构体
{
CPos m_pos ; //XY坐标;
UINT m_posID; //点的ID;
CString m_strPosName;点的NAME:
}
CArray m_arrMyPoint; //定义结构体类型数组
需要动态添加时
MyPoint point;
point.m_pos.x = 100;point.m_pos.y = 50; // 假设XY坐标为100,50
point.posID= 99; //点的ID
point.m_strPosName = "A点"; //点的name
添加:
m_arrMyPoint.Add(point); //将点结构体point加入数组末尾,
m_arrMyPoint.InsertAt(0,point); //将点结构体插入数组中0位置
删除:
m_arrMyPoint.RemoveAt(0,1); //从0位置起删除1个结构体
修改:
MyPoint newPoint; //新点结构
m_arrMyPoint.SetAt(0,newPoint); //将原位置为0的point 替换为 newpoint
或直接赋值:
m_arrMypoint.GetAt(0).m_strPosName = "B点"; //直接根据索引0修改该点名称
查询:
这个没有现成功能,自己写个条件遍历吧
for(int i=0; i<m_arrMyPoint.GetSize(); i++) //遍历整个数组
{
if(m_arrMyPoint.GetAt(i).m_strPosName == "X点") //假设查询数组中名称为X点的结构体
{
处理代码。。。 //可对该点属性进行任何处理
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询