首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于CAD类型的程序,哪个更好:列表,向量,还是双队列?

对于CAD类型的程序,哪个更好:列表,向量,还是双队列?
EN

Stack Overflow用户
提问于 2012-06-28 06:11:42
回答 3查看 202关注 0票数 2

我想创建一个类似于一个简单的CAD程序,在其中我可以画圆,线,正方形等。没有太花哨,只是基本的绘图东西。

我对如何制作这个程序有一些想法,但我需要一些建议。在CAD程序中,你可以画出任意多的矩形和形状,也可以删除任何他们想要的东西。

我认为对于每个绘制的图形(线,矩形,多边形)应该是一个类的实例,并且实例应该存储在列表中,因为我希望每个绘制的形状都有自己的属性,如颜色,(x,y)坐标,线型等。例如,'rect_list‘是一个容器,存储来自类'Rectangle’的实例。

对于这种编写程序的方法,哪种容器更好?vectorlist还是deque

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-28 21:25:35

我会考虑使用链表来快速添加和删除实体。对于巨大的列表,当你到处删除实体时,会发生繁重的内存操作,并减慢整个过程……

对于选择,在链表的情况下,需要在实体级别保留一个自动递增的整数值。

票数 2
EN

Stack Overflow用户

发布于 2012-06-28 06:16:27

你的顶点列表应该在一个向量中(一旦你知道了点的数量,调整向量的大小以容纳这么多的点并填充它),然后你需要一个所有这些向量的列表,这样你就可以插入到中间,否则就可以有效地操作该列表。

然而..。你真正想要的是一个场景图。这是一个“树视图”模型,它存储了对象的3d视图,因此您可以很容易地看到哪些对象与其他对象相关。它们还可以显示哪些对象在显示时隐藏了其他对象(因此您不需要同时绘制它们),或者哪些对象不在屏幕上(同上)。

其中最好的是OpenSceneGraph,它非常像STL。

票数 3
EN

Stack Overflow用户

发布于 2012-06-28 10:06:12

我建议你使用Qt,使用他们的QGraphicsScene系统。该场景包含QGraphicsItem子对象,并且这些子对象可以包含其自身的更多子对象。系统将为您处理内存和父子关系。它们还具有空间索引功能,例如,重绘可以快速访问所需的对象。该索引还允许快速确定哪些对象的边界框与鼠标位置相交。

我最近在Qt中发布了两个关于使用图形场景/视图系统的特定方面的simple examples。它们都是自包含的代码,可以在Qt Creator的空Qt项目中编译。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11235525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档