2010-03-15 45 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。