2010-03-15 44 views
1

我正在开发基于OpenGL的C++仿真。我现在正在优化我的代码,并且在代码中经常使用std:list和std:vector。什么是更具表现力的:继续使用C++ stl数据结构或基于指针的链表?涉及std :: list和std :: vector的主要操作是打开一个迭代器并循环遍历数据结构中的所有项并应用一些处理C++ stl集合或链接列表

+3

如果你还没有分析你的代码,你提前问这个问题。在到达这里之前,您应该知道std :: list或std :: vector是否花费了不成比例的时间。 – 2010-03-15 22:45:37

+2

我怀疑如果你分析你的代码,你会发现你使用STL并不是最慢的事情。不要问这个问题,直到它是最慢的事情...在完全优化的发布模式。 – 2010-03-15 22:46:15

+0

仅供参考,“高性能”是我最常听到的所谓“performatic”的字眼。 – sblom 2010-03-21 18:59:34

回答

5

stl指针的容器怎么样?

你不可能开发比内建更好的表演结构。唯一的下行部分是容器实际上包含存储在其中的对象的副本。如果您担心这种内存开销(多个结构占用同一对象的多个副本,打破表中的一致性),您应该考虑使用stl指针结构来满足您的需求。

从算法上讲,你需要的结构是在stl中实现的,所以你应该使用它。没有必要重新实现相同的结构。

4

使用C++ STL数据结构,但有效地使用它们。如果您使用的std :: list和std ::载体,查找等功能发现,for_each的,积累等 下面是一些良好的阅读: http://www.cplusplus.com/reference/

阅读算法,数字和功能的章节。另外,我强烈推荐Scott Meyers的Effective STL。