不同STL容器等矢量,堆,設置,隊列等支持他們不同的訪問方法。C++ STL容器
如果您編碼例如記事本++或VIM,你必須不斷參考文檔,看看有什麼方法都可用,至少我不得不這樣做。
是否有一些好的方法來記住哪個容器支持哪些方法?
不同STL容器等矢量,堆,設置,隊列等支持他們不同的訪問方法。C++ STL容器
如果您編碼例如記事本++或VIM,你必須不斷參考文檔,看看有什麼方法都可用,至少我不得不這樣做。
是否有一些好的方法來記住哪個容器支持哪些方法?
方法的名稱因爲不同而不同。它有助於記住哪些容器具有哪些方法,以瞭解名稱的含義。例如對於集合而言是無意義的。 insert
在談論堆棧時沒有任何意義(當然堆棧也沒有正面或背面,所以它不支持push_back
,只是push
)。對於矢量,兩者都有明確的含義,因此矢量支持insert
和push_back
。
'stack','queue'和'priority_queue'首先不是容器(它們是*容器適配器*,帶有非常小的接口):) – UncleBens 2010-04-12 17:17:06
使用它們足夠讓你記住每個的方法。
如果你的內存一直沒有你,儘量保持a reference of them all了在另一個窗口。如果你有多個顯示器,它真的是在第二個顯示器上有這樣的東西(用於任何類型的文檔)。
或者我極力推薦一個真正的編碼IDE,具有智能感知!記事本++可能太簡單了,無法在C++中生產。
這可能不是正是你要尋找什麼,但斯科特·邁爾斯(的「有效的C++」成名)編制基於尼古拉約祖蒂斯的著作「C++標準庫」的STL算法如下列表:
瞭解它們是什麼以及常用的方法,然後應該很容易記住哪些適用。 STL並不完全一致,但它非常好。
我承認,它不支持記憶,你可以得到某種VIM上運行的智能感知的。優點是您可以從自己的和外部的源代碼文件創建標籤。無論如何STL需要一個特殊的處理,這裏描述。
下載這些VIM的腳本OmniCppComplete和SuperTab。
安裝OmniCppComplete:
安裝SUPERTAB:
通過您最喜愛的軟件包管理器安裝ctags。下載並解壓這個file並在其上運行ctags。
$ ctags -R --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++ tags_stl cpp_src
這將生成一個名爲包含STL標籤 'tags_stl' 一個ctags的文件。將它複製到任何你喜歡添加不存在你的〜/ .vimrc以下行:「」
set tags+=~/path/to/your/tags_stl
filetype on
filetype plugin on
let OmniCpp_GlobalScopeSearch=1
let OmniCpp_NamespaceSearch=2
let OmniCpp_MayCompleteDot=1
let OmniCpp_MayCompleteArrow=1
let OmniCpp_MayCompleteScope=1
let OmniCpp_DisplayMode=1
let OmniCpp_DefaultNamespaces=["std"]
這就完成了「標籤」,對STL語句,‘::’和‘ - >’使用」,即使命名空間性病;」。不要這樣做,如果你討厭洋紅色。
即使你記得所有的「方法」,那只是故事的一部分。要有效使用STL,您還需要了解算法。我建議在一本好書(Stroustrup,Josuttis,...)中閱讀有關STL的內容,只記得可用的內容,然後返回到書籍或在需要確切語法時打開參考站點。
經常使用它們,你的手指會記住它們。 – 2010-04-12 16:34:41
@cambr擁有良好的記憶力是程序員恕我直言的首要條件之一。 – 2010-04-12 16:37:03
你究竟在這裏尋找什麼?你可以唱什麼歌來記住東西?你可以像其他一切一樣學習經驗。或者使用現代的IDE。 – ryeguy 2010-04-12 16:47:35