2010-04-12 9 views
7

różnych pojemników STL jak wektora, stosu, ustawić, kolejce itp obsługiwać różne metody dostępu na nich.C++ kontenery STL

Jeśli kodowanie na przykład w Notepad ++ lub vim, trzeba stale znajdują się w dokumentacji, aby zobaczyć, jakie są dostępne wszystkie metody, conajmniej muszę.

Czy jest jakiś dobry sposób na zapamiętanie który pojemnik obsługuje jakie metody ??

+14

Używaj ich często, a Twoje palce będą je pamiętać. –

+2

@cambr Posiadanie dobrej pamięci to jedno z podstawowych wymagań programisty, IMHO. –

+0

Czego dokładnie tu szukasz? Jakiś rodzaj piosenki, którą możesz zaśpiewać, aby zapamiętać rzeczy? Uczysz się tego z doświadczeniem, tak jak wszystko inne. Lub użyj nowoczesnego IDE. – ryeguy

Odpowiedz

12

Nazwy metod nie różnią się ze względu na bycie innym. Pomaga w zapamiętaniu, które pojemniki mają określone metody, aby zrozumieć znaczenie nazwy. push_back na przykład jest bezsensowne w stosunku do zestawów. insert nie ma sensu, gdy mówimy o stosach (oczywiście stosy również nie mają przedniej ani tylnej części, więc nie obsługuje ona push_back, tylko push). W przypadku wektora oba mają dobrze zdefiniowane znaczenie, więc wektor obsługuje zarówno insert i push_back.

+3

'stack',' queue' oraz 'priority_queue' nie są w pierwszym rzędzie kontenerami (są * adapterami kontenerów * z naprawdę małym interfejsem) :) – UncleBens

3

używać coś, że ma wbudowane intellisense takich jak Visual Studio w systemie Windows lub KDevelop na Linuksie.

Istnieją również dodatki do vim i emacs dla intellisense.

+0

@Brian R. Bondy Masz na myśli, że nie ma sposobu, aby łatwo je zapamiętać? Naprawdę nie chcę używać funkcji intellisense. – Moeb

+0

@cambr: Gdy użyjesz ich więcej w tym przypadku, zapamiętasz je automatycznie. –

+1

Kiedy mówisz "Naprawdę nie chcę używać funkcji intellisense", wszyscy czytamy: "Naprawdę nie chcę być skuteczniejszym programistą". – Alan

5

Używaj ich na tyle, aby zapamiętać metody każdego z nich.

4

Jeśli pamięć przechowuje zawodzi, spróbuj utrzymując a reference of them all się w innym oknie. Jeśli masz więcej niż jeden monitor, to jest on bardzo przydatny, aby mieć takie rzeczy na drugim monitorze (dla wszelkiego rodzaju dokumentacji).

Alternatywnie Gorąco polecam prawdziwe IDE kodowania z intellisense! Notepad ++ jest prawdopodobnie zbyt prosty, by być wydajnym w C++.

1

To nie może być dokładnie to, czego szukasz, ale Scott Meyers ("skutecznej C++" FAME) sporządziła następującą listę algorytmów STL w oparciu o książki Nicolai Josuttis "The C++ Standard Library":

Josuttis’ Summary of STL Algorithms

1

Dowiedz się, czym one są i jakie są wspólne metody, a następnie powinno być dość łatwo zapamiętać, które z nich dotyczą. STL nie jest idealnie spójny, ale jest całkiem niezły.

1

Przyznanie, że nie obsługuje zapamiętywania, można uzyskać pewien rodzaj intellisense działającego na vimie. Zaletą jest to, że można tworzyć znaczniki zarówno z własnych, jak i zewnętrznych plików kodu źródłowego. W każdym razie STL potrzebuje specjalnego traktowania, które jest tutaj opisane.

Pobierz te vim-skrypty OmniCppComplete i SuperTab.

Install OmniCppComplete:

  • Rozpakuj wtyczki do ~/.vim.

Install SuperTab:

  • Otwórz plik w vim ($ vim supertab.vba).
  • Źródło pliku (: tak%).

Zainstaluj ctags za pośrednictwem ulubionego menedżera pakietów. Pobierz i rozpakuj ten plik file i uruchom na nim ctagi.

$ ctags -R --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++ tags_stl cpp_src 

Spowoduje to wygenerowanie pliku ctags o nazwie "tags_stl" zawierającego znaczniki STL. Skopiuj go w dowolne miejsce. Dodaj następujące linie, które jeszcze nie istnieją do ~/.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"] 

tym kończy oświadczenia STL na karcie „”, «::» a - nazw nawet jeśli”za pomocą«>»„” std; '. Nie rób tego, jeśli nienawidzisz magenty.

3

Nawet jeśli pamiętasz wszystkie "metody", to tylko jedna część historii. Aby skutecznie używać STL, musisz znać również algorytmy. Sugerowałbym przeczytanie o STL w dobrej książce (Stroustrup, Josuttis, ...), aby zapamiętać, co jest dostępne, a następnie wrócić do książek lub otworzyć stronę z odniesieniami, gdy potrzebujesz dokładnej składni.