Die C ++ Standard Library Kategorien

Die Standard-Bibliothek in der Dokumentation verwendet einen formalen Ansatz, dass Sie gehen schwer zu finden, schwieriger zu lesen und auch zu verstehen. Der beste Weg zu beginnen, ist der Standard-Bibliothek in kleinere Stücke zu brechen. Sie können die Standard Library-Funktionen in einer Reihe von Möglichkeiten zu kategorisieren. Eines der am häufigsten verwendeten Ansätze ist es, die folgenden Kategorien zu verwenden:

Menu

Behälter

Behälter ebenso wie die Container in Ihrem Hause aus arbeiten - sie etwas halten. Beispielsweise beide Warteschlangen und deques sind Arten von Behältern. Die Behälter Kategorie enthält keine Funktionen, aber es enthält eine Reihe von Arten, einschließlich der folgenden:

basic_stringbit_vectorbitsetchar_producerdequehashlistmapmultimapmultisetpriority_queuequeueropesetsliststackvector

Iteratoren

Iteratoren aufzählen etwas. Wenn Sie eine Liste der Elemente, erstellen und dann diese Liste durchgehen Elemente Abhaken, sind Sie die Liste aufzählt. Mit Iteratoren hilft Ihnen, Listen von Elementen erstellen und diese auf bestimmte Weise. Die Art von Iterator Sie erstellen, ist wichtig, weil einige Iteratoren Sie lassen nur vorwärts gehen, einige in beide Richtungen gehen können, und einige können Einzelteile zufällig wählen. Jede Art von Iterator hat seinen bestimmten Zweck.

Die Iteratoren Kategorie umfasst eine Reihe von Arten. Diese Arten bestimmen die Art von Iterator Sie in Ihrem Code zu erstellen und die Fähigkeiten dieser Iterator. Es folgt eine Liste der Iteratortypen:

back_insert_iteratorbidirectional_iteratorbidirectional_iterator_tagforward_iteratorforward_iterator_tagfront_insert_iteratorinput_iteratorinput_iterator_taginsert_iteratoristream_iteratoriterator_traitsostream_iteratoroutput_iteratoroutput_iterator_tagrandom_access_iteratorrandom_access_iterator_tagraw_storage_iteratorreverse_bidirectional_iteratorreverse_iteratorsequence_buffer

Die Standard Library enthält auch eine Reihe von Iterator-spezifischen Funktionen. Diese Funktionen helfen Ihnen Aufgaben wie vorher (Zunahme) der Iterator um eine bestimmte Anzahl von Positionen durchführen. Sie können auch den Abstand zwischen dem Anfang und dem Ende des Iterators messen. Im Folgenden ist eine Liste der Iterator-Funktionen:

advancedistancedistance_typeiterator_categoryvalue_type

Algorithmen

Algorithmen führen Datenmanipulationen wie zu ersetzen, Ortung, oder Informationen zu sortieren. Es ist schwer, ohne die Verwendung einer eine wesentliche Anwendung zu erstellen. Es gibt keine Typen in der Algorithmen Kategorie. Im Folgenden ist eine Liste der Algorithmus Funktionen:

accumulateadjacent_differenceadjacent_findadvancebinary_searchcopycopy_backwardcopy_ncountcount_ifdistanceequalequal_rangefillfill_nfindfind_endfind_first_offind_iffor_eachgenerategenerate_nincludesinner_productinplace_mergeiotais_heapis_sortediter_swaplexicographical_comparelexicographical_compare_3waylower_boundmake_heapmaxmax_elementmergeminmin_elementmismatchnext_permutationnth_elementpartial_sortpartial_sort_copypartial_sumpartitionpop_heappowerprev_permutationpush_heaprandom_samplerandom_sample_nrandom_shuffleremoveremove_copyremove_copy_ifremove_ifreplacereplace_copyreplace_copy_ifreplace_ifreversereverse_copyrotaterotate_copysearchsearch_nset_differenceset_intersectionset_symmetric_differenceset_unionsortsort_heapstable_partitionstable_sortswapswap_rangestransformuninitialized_copyuninitialized_copy_nuninitialized_filluninitialized_fill_nuniqueunique_copyupper_bound

functors

functors eine spezielle Klasse von Objekt, die so tut, als ob es sich um eine Funktion ist. In den meisten Fällen rufen Sie einen Funktor durch die gleiche Syntax, die Sie für eine Funktion zu verwenden, aber functors besitzen alle guten Elemente der Objekte als auch, wie die Fähigkeit zur Laufzeit instanziiert.

Functors kommen in einer Vielzahl von Formen. Beispielsweise übernimmt eine binäre Funktion Funktors zwei Argumente als Eingabe und gibt ein Ergebnis als Ausgabe. Functors umfassen eine Reihe von Typen, die die Art der Funktion der Code erstellt bestimmen:

binary_composebinary_functionbinary_negatebinder1stbinder2nddividesequal_togreatergreater_equalhashidentitylessless_equallogical_andlogical_notlogical_ormem_fun1_ref_tmem_fun1_tmem_fun_ref_tmem_fun_tminusmodulusmultipliesnegatenot_equal_topluspointer_to_binary_functionpointer_to_unary_functionproject1stproject2ndselect1stselect2ndsubtractive_rngunary_composeunary_functionunary_negate

Dienstprogramme

Dienstprogramme sind Funktionen und Typen, die kleine Servicearbeiten im Rahmen der Standardbibliothek durchführen. Die Funktionen sind min (), max (), und die relationalen Operatoren. Die Typen sind chart_traits (Die Merkmale der Zeichen in anderen Funktionen der Standardbibliothek verwendet werden, wie basic_string) und Paar (Eine Paarung von zwei heterogenen Werte).

Adapter

Adapter die Umrechnung von einer Art. Sie machen es möglich, eine Art von Daten zu einem anderen anzupassen. In einigen Fällen führen Adapter Datenkonvertierung, wie Negieren Zahlen. Die Adapter Kategorie enthält eine Funktion, ptr_fun (). Darüber hinaus enthält der Adapter Kategorie, um die hier aufgeführten Typen:

back_insert_iteratorbinary_composebinary_negatebinder1stbinder2ndfront_insert_iteratorinsert_iteratormem_fun1_ref_tmem_fun1_tmem_fun_ref_tmem_fun_tpointer_to_binary_functionpointer_to_unary_functionpriority_queuequeueraw_storage_iteratorreverse_bidirectional_iteratorreverse_iteratorsequence_bufferstackunary_composeunary_negate

Zuweiser

Zuweiser Verwaltung von Ressourcen, in der Regel Speicher. In den meisten Fällen werden Sie nicht immer die Mitglieder der Zuweiser Kategorie verwenden müssen. Beispielsweise erstellen Sie in der Regel neue Objekte mit Hilfe der neu Operator. Das neu Operator reserviert für den Objektspeicher und erstellt dann die von der Objekt Konstruktor aufrufen.

In seltenen Fällen, wie zum Beispiel, wenn Sie wollen, eine Form der Objektverwaltung zu implementieren, können Sie die Speicherzuweisung Prozess aus dem Bauprozess zu trennen. In diesem Fall rufen Sie bauen() die eigentliche Aufgabe des Aufbaus des Objekts auf der Grundlage seiner Klassendefinition durchzuführen. Die Zuweiser Kategorie hat die folgenden Funktionen.

constructdestroyget_temporary_bufferreturn_temporary_bufferuninitialized_copyuninitialized_copy_nuninitialized_filluninitialized_fill_n

Die Zuweiser Kategorie gehören auch ein paar Typen. Diese Arten helfen Sie Speicher verwalten, und Sie können mehr Verwendung für sie, als Sie die Funktionen in dieser Kategorie finden. Die Typen sind

raw_storage_iteratortemporary_buffer

Polymorphe Zuweiser

Wenn Sie mit älteren Versionen der Standard Library arbeiten, verwendet Zuweiser als Argumente an Vorlagen zu Problemen führen, weil sie nach Art gebunden sind. Das bedeutet, dass ein Vektor erstellt std :: vector ist eine ganz andere Art von einem Vektor erstellt mit std :: vector, auch wenn man einfach eine Verlängerung des anderen.

Das myalloc Teil der Vorlage definiert einfach die Methode für die Zuweisung Gedächtnis- es tatsächlich nicht die Art der Daten, die von der Vorlage verwaltet beeinflussen. Also, in beiden Fällen sind Sie erstellt ein Vektor halten int Daten - sind die Typen gleich. Der einzige Unterschied ist das Verfahren, in dem Speicher zugeordnet ist (der erste Standard-Speicherzuweisung Techniken verwendet, während die zweite eine benutzerdefinierte allocator verwendet).

Mit polymorphe Allocators beseitigt dieses Problem durch eine abstrakte Basisspeicherklasse definiert, memory_resource, für alle Speicherverteiler zu verwenden. Diese abstrakte Klasse definiert die folgenden rein virtuelle Methoden:

allocatedeallocateis_equal ()

Menü