C++ контейнеры STL

Различные контейнеры STL как вектор, стек, набор, очередь, и т.д. поддерживают различные методы доступа для них.

Если Вы кодируете, например, в Блокноте ++ или энергия, необходимо непрерывно обращаться к документации для наблюдения то, что все методы доступны, по крайней мере я имею к.

Есть ли некоторый хороший способ помнить который контейнерные поддержки который методы??

7
задан Moeb 12 April 2010 в 16:31
поделиться

8 ответов

Названия методов не отличаются друг от друга. Это помогает запомнить, какие контейнеры имеют какие методы, чтобы понять значение имени. push_back , например, бессмысленен по отношению к наборам. insert не имеет никакого смысла, когда речь идет о стеках (конечно, у стека нет ни передней, ни оборотной стороны, поэтому он не поддерживает push_back , только нажмите ). Для вектора оба имеют четко определенное значение, поэтому вектор поддерживает как insert , так и push_back .

12
ответ дан 6 December 2019 в 06:02
поделиться

Если ваша память продолжает подводить вас, попробуйте сохранить ссылку на них всех в другом окне. Если у вас более одного монитора, действительно удобно иметь подобные вещи на втором мониторе (для любой документации).

В качестве альтернативы я настоятельно рекомендую настоящую IDE для кодирования с intellisense! Notepad ++, вероятно, слишком прост, чтобы работать на C ++ продуктивно.

4
ответ дан 6 December 2019 в 06:02
поделиться

Используйте что-то со встроенным intellisense, например Visual Studio в Windows или KDevelop в Linux.

Существуют также надстройки для vim и emacs для intellisense.

3
ответ дан 6 December 2019 в 06:02
поделиться

Признавая, что он не поддерживает запоминание, вы можете запустить какой-то intellisense на vim. Преимущество состоит в том, что вы можете создавать теги как из собственных, так и из внешних файлов исходного кода. Как бы то ни было, STL требует особого обращения, описанного здесь.

Загрузите эти vim-скрипты OmniCppComplete и SuperTab .

Установите 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 

Будет создан файл ctags с именем 'tags_stl', содержащий STL-теги. Скопируйте его куда угодно. Добавьте следующие строки, которых еще нет в вашем ~ / .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 на 'tab', '.', '::' и '->', даже если 'using namespace std;'. Не делайте этого, если ненавидите пурпурный.

1
ответ дан 6 December 2019 в 06:02
поделиться

Изучите, что это такое, и общие методы, и тогда будет довольно легко вспомнить, какие из них применимы. STL не совсем согласован, но довольно хорош.

1
ответ дан 6 December 2019 в 06:02
поделиться

Даже если вы помните все «методы», это только часть истории. Чтобы эффективно использовать STL, вам также необходимо знать алгоритмы. Я бы посоветовал прочитать о STL в хорошей книге (Страуструп, Йосуттис, ...), чтобы просто вспомнить, что доступно, а затем вернуться к книгам или открыть справочный сайт, когда вам нужен точный синтаксис.

3
ответ дан 6 December 2019 в 06:02
поделиться

Возможно, это не совсем то, что вы ищете, но Скотт Мейерс (известный «Эффективный C ++») составил следующий список алгоритмов STL на основе о книге Николая Джозаттиса «Стандартная библиотека C ++»:

Краткое изложение алгоритмов STL Джозаттиса

1
ответ дан 6 December 2019 в 06:02
поделиться

Используйте их достаточно, чтобы запомнить методы каждого.

5
ответ дан 6 December 2019 в 06:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: