c++ - 对于 CAD 类型的程序,: lists, vector 或双端队列哪个更好?

标签 c++ list stl vector cad

我想创建一个类似于简单的 CAD 程序的东西,我可以在其中绘制圆、线、正方形等。没什么特别的,只是基本的绘图内容。

我对如何制作程序有一些想法,但我需要建议。在 CAD 程序中,可以绘制尽可能多的矩形和形状,并可以根据需要移除任何一个。

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

对于这种制作程序的方法,用什么容器比较好? vectorlist 还是 deque

最佳答案

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

但是...您真正想要的是场景图。这是一个“ TreeView ”模型,存储对象的 3d View ,因此您可以轻松查看哪些对象与其他对象相关。它们还可以向您显示哪些对象在显示时隐藏了其他对象(因此您不需要同时绘制它们),或者哪些对象在屏幕外(同上)。

最好的一个是OpenSceneGraph ,它非常像 STL。

关于c++ - 对于 CAD 类型的程序,: lists, vector 或双端队列哪个更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11235525/

相关文章:

c++ - 我第一次使用std::distance时可以使用一些清晰度

C++ 模板和继承,派生类中的函数未被替换

c++ - 如何检查一个集合是否在C++中的特定范围内具有元素

c++ - 如何在 for_each 期间添加元素

r - 如何创建在 R 的 for 循环中使用的 lmer 模型对象列表?

python - 在元组列表中查找元组(按多个键排序)

java - 排序列表后,如何将列表中的对象取回它们原来的位置?

C++ fstream不显示写入的内容

c++ - 可以清除递归函数中的变量吗?

c++ - 可以利用 std::basic_string 来实现具有长度限制的字符串吗?