C+中的链接类+;? 众所周知,用C++实现LIKES列表是为了使程序动态化。 但现在,我正在编程C++中的“链接类”。 我的父类“GAME”应该有数量可变的元素。每个元素都是一个类。 所以我编了一个程序: class GAME : public LEVEL { private: ELEMENT *startPointer; public: GAME() { startPointer=NULL; } initGame() { p=aStartPointer; while(p!=NULL);//This loop is based on a linked list, so its dynamic { startPointer=new ELEMENT(startPointer); p=p->next; } } } class ELEMENT { private: ELEMENT *next; public: ELEMENT(ELEMENT* nextPointer) { next=nextPointer; } }
我的问题是:我以前从未听说过链接类,我不确定是否应该使用它。C+中的链接类+;? 众所周知,用C++实现LIKES列表是为了使程序动态化。 但现在,我正在编程C++中的“链接类”。 我的父类“GAME”应该有数量可变的元素。每个元素都是一个类。 所以我编了一个程序: class GAME : public LEVEL { private: ELEMENT *startPointer; public: GAME() { startPointer=NULL; } initGame() { p=aStartPointer; while(p!=NULL);//This loop is based on a linked list, so its dynamic { startPointer=new ELEMENT(startPointer); p=p->next; } } } class ELEMENT { private: ELEMENT *next; public: ELEMENT(ELEMENT* nextPointer) { next=nextPointer; } },c++,class,linked-list,C++,Class,Linked List,我的问题是:我以前从未听说过链接类,我不确定是否应该使用它。 专业程序员使用这种方法吗(有用吗?),还是有更好的方法 有没有更好的方法 对。这里有一个: class GAME : public LEVEL { private: std::vector<ELEMENT> elements; ... }; 类游戏:公共级别 {私人: std::向量元素; ... }; 使用标准库容器: 通常,使用std::vector 如果需要唯一性,请使用std::set 如果
专业程序员使用这种方法吗(有用吗?),还是有更好的方法 有没有更好的方法 对。这里有一个:
class GAME : public LEVEL
{ private:
std::vector<ELEMENT> elements;
...
};
类游戏:公共级别
{私人:
std::向量元素;
...
};
使用标准库容器:
- 通常,使用
std::vector
- 如果需要唯一性,请使用
std::set
- 如果需要将元素与键关联,请使用
std::map
- 如果需要经常或快速地从容器中插入或删除项目,请使用
或std::list
std::set
- 还有其他考虑。查阅一本好书,了解如何有效使用标准容器
正如其他帖子所提到的,容器本身可能应该是STL容器,除非你有很好的理由使用其他容器(即使这样,“越标准越好;自制不是一个好主意,除非它仅用于教育目的).看起来您正在尝试使用其他名称实现一个链接列表。更好的设计是使用列表或向量作为类的成员来存储
元素
,而不是将其作为游戏
类的基本功能
这允许您在类似容器的对象和应用程序类之间进行分离。专业程序员使用标准容器,如
std::vector
和std::list
。专业程序员不会编写自己的链表实现,至少如果他们想为我工作的话不会。一般来说,如果您认为应该使用std::list
,请重新考虑。@Yakk+1:我记得有一次关于MSVC STL实现性能分析的谈话;他们发现,由于引用的局部性,即使在列表理论上比向量更好的情况下,也令人惊讶的是,你要推动列表真正开始“投资回报”有多么荒谬。