2010-04-12 69 views
7

不同STL容器等矢量設置隊列等支持他們不同的訪問方法。C++ STL容器

如果您編碼例如記事本++VIM,你必須不斷參考文檔,看看有什麼方法都可用,至少我不得不這樣做。

是否有一些好的方法來記住哪個容器支持哪些方法?

+14

經常使用它們,你的手指會記住它們。 – 2010-04-12 16:34:41

+2

@cambr擁有良好的記憶力是程序員恕我直言的首要條件之一。 – 2010-04-12 16:37:03

+0

你究竟在這裏尋找什麼?你可以唱什麼歌來記住東西?你可以像其他一切一樣學習經驗。或者使用現代的IDE。 – ryeguy 2010-04-12 16:47:35

回答

12

方法的名稱因爲不同而不同。它有助於記住哪些容器具有哪些方法,以瞭解名稱的含義。例如對於集合而言是無意義的。 insert在談論堆棧時沒有任何意義(當然堆棧也沒有正面或背面,所以它不支持push_back,只是push)。對於矢量,兩者都有明確的含義,因此矢量支持insertpush_back

+3

'stack','queue'和'priority_queue'首先不是容器(它們是*容器適配器*,帶有非常小的接口):) – UncleBens 2010-04-12 17:17:06

3

使用一些已建成的智能感知如Visual Studio在Windows或KDevelop的Linux操作系統。

還有一些附加的VIM和emacs的智能感知。

+0

@布萊恩R.邦迪你的意思是沒有辦法容易記住這些?我真的不想使用智能感知功能。 – Moeb 2010-04-12 16:35:27

+0

@cambr:當你在這種情況下使用它們時,你會自動記住它們。 – 2010-04-12 16:36:17

+1

當你說「我真的不想使用智能感知功能」時,我們都讀的是「我真的不想成爲一個更有效的程序員」。 – Alan 2010-04-12 17:48:01

5

使用它們足夠讓你記住每個的方法。

4

如果你的內存一直沒有你,儘量保持a reference of them all了在另一個窗口。如果你有多個顯示器,它真的是在第二個顯示器上有這樣的東西(用於任何類型的文檔)。

或者我極力推薦一個真正的編碼IDE,具有智能感知!記事本++可能太簡單了,無法在C++中生產。

1

這可能不是正是你要尋找什麼,但斯科特·邁爾斯(的「有效的C++」成名)編制基於尼古拉約祖蒂斯的著作「C++標準庫」的STL算法如下列表:

Josuttis’ Summary of STL Algorithms

1

瞭解它們是什麼以及常用的方法,然後應該很容易記住哪些適用。 STL並不完全一致,但它非常好。

1

我承認,它不支持記憶,你可以得到某種VIM上運行的智能感知的。優點是您可以從自己的和外部的源代碼文件創建標籤。無論如何STL需要一個特殊的處理,這裏描述。

下載這些VIM的腳本OmniCppCompleteSuperTab

安裝OmniCppComplete:

  • 解壓該插件到〜/ vim的。

安裝SUPERTAB:

  • 打開Vim的文件($ VIM supertab.vba)。
  • 來源文件(:so%)。

通過您最喜愛的軟件包管理器安裝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語句,‘::’和‘ - >’使用」,即使命名空間性病;」。不要這樣做,如果你討厭洋紅色。

3

即使你記得所有的「方法」,那只是故事的一部分。要有效使用STL,您還需要了解算法。我建議在一本好書(Stroustrup,Josuttis,...)中閱讀有關STL的內容,只記得可用的內容,然後返回到書籍或在需要確切語法時打開參考站點。