[英]C++ STL containers
不同的STL容器(例如vector , stack , set , queue等)在其上支持不同的訪問方法。
例如,如果您使用Notepad ++或vim進行編碼,則必須不斷查閱文檔以查看所有可用方法,至少我必須這樣做。
有什么好方法可以記住哪個容器支持哪些方法?
為了不同,方法的名稱沒有不同。 它有助於記住哪個容器具有哪些方法,以了解名稱的含義。 例如, push_back
對集合是無意義的。 在談論堆棧時, insert
沒有任何意義(當然,堆棧也沒有正面或背面,因此它不支持push_back
,僅支持push
)。 對於向量,兩者都有明確的含義,因此向量同時支持insert
和push_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算法列表:
了解它們是什么以及常用的方法,然后應該很容易記住哪些方法適用。 STL並不完全一致,但是非常好。
承認它不支持記住您可以在vim上運行某種智能感知。 優點是您可以從自己的和外部源代碼文件中創建標簽。 無論如何,STL需要特殊處理,在此進行描述。
下載這些vim腳本OmniCppComplete和SuperTab 。
安裝OmniCppComplete:
安裝SuperTab:
通過您喜歡的軟件包管理器安裝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.