簡體   English   中英

C ++ STL容器

[英]C++ STL containers

不同的STL容器(例如vectorstacksetqueue等)在其上支持不同的訪問方法。

例如,如果您使用Notepad ++vim進行編碼,則必須不斷查閱文檔以查看所有可用方法,至少我必須這樣做。

有什么好方法可以記住哪個容器支持哪些方法?

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

充分使用它們,以便記住每種方法。

如果您的記憶不斷失敗,請嘗試在另一個窗口中保留它們的引用 如果您有一台以上的顯示器,那么在另一台顯示器上放這樣的東西真的很方便(用於任何類型的文檔)。

另外,我強烈建議您使用帶有intellisense的真實編碼IDE! Notepad ++可能太簡單了,無法在C ++中發揮作用。

使用內置的智能感知功能,例如Windows上的Visual Studio或Linux上的KDevelop。

還有一些用於vim和emacs的附加組件,用於intellisense。

即使您記住所有“方法”,也僅是故事的一部分。 為了有效地使用STL,您還需要了解算法。 我建議讀一本好書(Stroustrup,Josuttis等)中有關STL的內容,以僅記住可用的內容,然后在需要確切的語法時回到書中或打開參考站點。

這可能不完全是您想要的,但Scott Niyers(以“ Effective C ++”着稱)基於Nicolai Josuttis的書“ The C ++ Standard Library”編譯了以下STL算法列表:

Josuttis的STL算法摘要

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

承認它不支持記住您可以在vim上運行某種智能感知。 優點是您可以從自己的和外部源代碼文件中創建標簽。 無論如何,STL需要特殊處理,在此進行描述。

下載這些vim腳本OmniCppCompleteSuperTab

安裝OmniCppComplete:

  • 將插件解壓縮到〜/ .vim。

安裝SuperTab:

  • 在vim($ vim supertab.vba)中打開文件。
  • 源文件(:so%)。

通過您喜歡的軟件包管理器安裝ctags 下載並解壓縮該文件 ,然后在其上運行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"]

即使在“使用命名空間std;”時,也會完成對“ tab”,“。”,“ ::”和“->”的STL語句。 如果您討厭洋紅色,請不要這樣做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM