【发布时间】:2013-11-05 20:32:36
【问题描述】:
我得到了一些代码来阅读,这些代码对网格进行了一些几何操作。
根据定义,网格数据结构应至少包含以下信息 关于点的坐标、边缘连通性和人脸信息。
所以,给我的代码有定义顶点、边和面数据结构的类, 分别命名为顶点、边和面。
但是网格类看起来像这样。
class basemesh
{
public:
/* Methods to operate on the protected data below.*/
protected:
/*! list of edges */
std::list<Edge*> m_edges;
/*! list of vertices */
std::list<Vertex*> m_verts;
/*! list of faces */
std::list<Face*> m_faces;
}
我的问题:为什么网格数据结构存储指针列表而不是 相应对象本身的列表。
例如为什么不直接说std::list<Vertex>
我已经看到这个结构被用于其他几个 C++ 代码
这与类的继承有关吗?还是有事要做 关于迭代列表的性能?
顾名思义,这个 basemesh 类是一个基类, 衍生出其他专门的网格。
【问题讨论】:
-
简单的指针比副本快。他们指向,而不是复制。
-
难道边、顶点和面是要在实例之间共享的吗?