[英]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.