Les catégories de la bibliothèque standard C ++

La documentation bibliothèque standard utilise une approche formelle que vous allez trouver difficile à lire et encore plus difficile à comprendre. La meilleure façon de commencer est de briser la bibliothèque standard en petits morceaux. Vous pouvez classer les fonctions de la bibliothèque standard dans un certain nombre de façons. L'une des approches les plus courantes consiste à utiliser les catégories suivantes:

Sommaire

Conteneurs

Conteneurs fonctionnent comme les conteneurs dans votre maison - ils détiennent quelque chose. Par exemple, les deux files d'attente et sont Deques types de conteneurs. La catégorie conteneurs ne contient pas de fonctions, mais il contient un certain nombre de types, y compris les suivantes:

basic_stringbit_vectorbitsetchar_producerdequehashlistmapmultimapmultisetpriority_queuequeueropesetsliststackvector

Itérateurs

Itérateurs énumérer quelque chose. Lorsque vous créez une liste d'éléments, puis passer par cette liste d'articles cochant, vous énumérer la liste. Utilisation itérateurs vous permet de créer des listes d'articles et de les manipuler de manière spécifique. Le genre de iterator vous créez est important parce que certains itérateurs vous laisser aller de l'avant seulement, certains peuvent aller dans les deux sens, et certains pouvez choisir les articles au hasard. Chaque type de iterator a son but spécifique.

La catégorie Itérateurs comprend un certain nombre de types. Ces types déterminent le genre de iterator vous créez dans votre code et les capacités de ce iterator. Voici une liste des types d'itération:

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

La bibliothèque standard comprend également un certain nombre de fonctions spécifiques à l'itération. Ces fonctions vous aident à effectuer des tâches telles que l'avance (minimum) l'itérateur par un certain nombre de positions. Vous pouvez également mesurer la distance entre le début et la fin de l'itérateur. Ce qui suit est une liste de fonctions d'itération:

advancedistancedistance_typeiterator_categoryvalue_type

Algorithmes

Algorithmes effectuer des manipulations de données telles que le remplacement, la localisation, ou le tri des informations. Il est difficile de créer une application substantielle sans utiliser un. Il n'y a pas de types dans la catégorie des algorithmes. Ce qui suit est une liste des fonctions de l'algorithme:

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 sont une classe d'objet spécial qui agit comme si elle est une fonction. Dans la plupart des cas, vous appelez un foncteur en utilisant la même syntaxe que vous utilisez pour une fonction, mais foncteurs possédez tous les bons éléments d'objets ainsi, tels que la capacité de les instancier à l'exécution.

Functors viennent dans un certain nombre de formes. Par exemple, une fonction binaire functor accepte deux arguments en entrée et fournit un résultat en sortie. Functors comprennent un certain nombre de types qui déterminent le type de fonction le code crée:

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

Utilitaires

Utilitaires sont des fonctions et des types qui effectuent des tâches de service petits au sein de la bibliothèque standard. Les fonctions sont min (), max (), et les opérateurs relationnels. Les types sont chart_traits (les traits de caractères utilisées dans d'autres fonctions de la bibliothèque standard, tels que basic_string) Et paire (un appariement de deux valeurs hétérogènes).

Adaptateurs

Adaptateurs effectuer des conversions d'une sorte. Ils permettent d'adapter un type de données à un autre. Dans certains cas, les adaptateurs d'effectuer la conversion de données, telles que les numéros négation. La catégorie des Adaptateurs comprend une fonction, ptr_fun (). En outre, la catégorie Adaptateurs inclut les types énumérés ici:

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

Allocators


Allocators gérer les ressources, normalement mémoire. Dans la plupart des cas, vous ne serez jamais besoin d'utiliser les membres de la catégorie Allocators. Par exemple, vous créez de nouveaux objets normalement en utilisant le nouveau opérateur. La nouveau opérateur alloue de la mémoire pour l'objet, puis crée en appelant le constructeur de l'objet.

Dans de rares cas, comme lorsque vous voulez mettre en œuvre une forme de regroupement d'objets, vous pouvez séparer le processus d'allocation de mémoire du processus de construction. Dans ce cas, vous appelez construct () pour effectuer la tâche réelle de la construction de l'objet en fonction de sa définition de la classe. La catégorie Allocators a les fonctions suivantes.

constructdestroyget_temporary_bufferreturn_temporary_bufferuninitialized_copyuninitialized_copy_nuninitialized_filluninitialized_fill_n

La catégorie Allocators comprend également un couple de types. Ces types vous aider à gérer la mémoire, et vous pouvez trouver plus d'utilité pour eux que vous les fonctions dans cette catégorie. Les types sont

raw_storage_iteratortemporary_buffer

Allocateurs polymorphes

Lorsque vous travaillez avec les anciennes versions de la bibliothèque standard, répartiteurs utilisés comme arguments à des modèles créent des problèmes parce qu'ils sont liés par type. Ce que cela signifie est que un vecteur créée en utilisant std :: vector est un type complètement différent d'un vecteur créés à l'aide std :: vector, même si on est simplement une extension de l'autre.

La myalloc partie du modèle définit simplement la méthode utilisée pour répartir mémoire- il ne fait pas d'effet du type de données gérées par le modèle. Donc, dans les deux cas, vous êtes créé un vecteur Tenir int données - les types sont les mêmes. La seule différence est le procédé dans lequel la mémoire est allouée (le premier utilise des techniques d'allocation de mémoire standard, tandis que le second utilise un allocateur de mesure).

Utilisation allocateurs polymorphes élimine ce problème en définissant une classe abstraite de mémoire de base, memory_resource, à utiliser pour tous les répartiteurs de mémoire. Cette classe abstraite définit les méthodes virtuelles pures suivantes:

allocatedeallocateis_equal ()

» » » » Les catégories de la bibliothèque standard C ++