Los c ++ estándar de categorías de la biblioteca
La documentación de la biblioteca estándar utiliza un enfoque formal que vas a encontrar difícil de leer y aún más difícil de entender. La mejor manera de comenzar es romper la biblioteca estándar en pedazos más pequeños. Puede categorizar las funciones de biblioteca estándar en un número de maneras. Uno de los métodos más comunes es el uso de las siguientes categorías:
Conteúdo
Contenedores
Contenedores funcionan igual que los contenedores en su casa - que poseen algo. Por ejemplo, ambas colas y deques son tipos de contenedores. La categoría Contenedores no contiene ninguna función, pero contiene un número de tipos incluyendo las siguientes:
basic_stringbit_vectorbitsetchar_producerdequehashlistmapmultimapmultisetpriority_queuequeueropesetsliststackvector
Iteradores
Iteradores enumerar algo. Cuando se crea una lista de elementos, y luego ir a través de que los elementos de comprobación de la lista fuera, usted está enumerando la lista. El uso de iteradores le ayuda a crear listas de artículos y manipularlos de manera específica. La clase de iterador que cree es importante porque algunos iteradores permiten seguir adelante solamente, algunos pueden ir en cualquier dirección, y algunos puede elegir los elementos al azar. Cada clase de iterador tiene su propósito específico.
La categoría iteradores incluye una serie de tipos. Estos tipos determinan la clase de iterador que cree en el código y las capacidades de ese iterador. La siguiente es una lista de los tipos de iterador:
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 biblioteca estándar también incluye una serie de funciones de iterador específica. Estas funciones le ayudan a realizar tareas tales como adelanto (incremento) el iterador por un cierto número de posiciones. También se puede medir la distancia entre el comienzo y el final del iterador. La siguiente es una lista de funciones de iterador:
advancedistancedistance_typeiterator_categoryvalue_type
Algoritmos
Algoritmos realizar manipulaciones de datos tales como la sustitución, la localización, o la clasificación de la información. Es difícil crear una aplicación sustancial sin necesidad de utilizar una. No hay ningún tipo en la categoría Algoritmos. La siguiente es una lista de funciones de algoritmo:
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
Funtores
Funtores son una clase especial de objeto que actúa como si fuera una función. En la mayoría de los casos, se llama a un funtor utilizando la misma sintaxis que se utiliza para una función, pero funtores posee todos los buenos elementos de los objetos, así como la capacidad de crear una instancia en tiempo de ejecución.
Functors vienen en un número de formas. Por ejemplo, una función binaria funtor acepta dos argumentos como entrada y proporciona un resultado como salida. Functors incluyen un número de tipos que determinan el tipo de función crea el código:
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
Utilidades
Utilidades son funciones y tipos que realizan tareas de servicio pequeñas dentro de la biblioteca estándar. Las funciones son min (), max (), y los operadores relacionales. Los tipos son chart_traits (los rasgos de caracteres utilizados en otras funciones de la biblioteca estándar, como basic_string) Y par (una pareja formada por dos valores heterogéneos).
Adaptadores
Adaptadores realizar conversiones de una especie. Ellos hacen posible adaptar un tipo de datos a otro. En algunos casos, los adaptadores llevan a cabo la conversión de datos, tal como números de negando. La categoría Adaptadores incluye una función, ptr_fun (). Además, la categoría Adaptadores incluye los tipos enumerados aquí:
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
Asignadores
Asignadores administrar los recursos, normalmente la memoria. En la mayoría de los casos, no siempre tendrá que utilizar los miembros de la categoría asignadores. Por ejemplo, normalmente crear nuevos objetos utilizando el nuevo operador. los nuevo operador asigna memoria para el objeto y luego lo crea llamando al constructor del objeto.
En casos raros, como cuando se quiere poner en práctica una forma de agrupación de objetos, es posible que desee separar el proceso de asignación de memoria del proceso de construcción. En este caso, se llama a construir () para realizar la tarea real de la construcción del objeto basado en su definición de clase. La categoría asignadores tiene las siguientes funciones.
constructdestroyget_temporary_bufferreturn_temporary_bufferuninitialized_copyuninitialized_copy_nuninitialized_filluninitialized_fill_n
La categoría asignadores también incluye un par de tipos. Estos tipos le ayudan a manejar la memoria, y usted puede encontrar un mayor uso por ellos de lo que será las funciones de esta categoría. Los tipos son
raw_storage_iteratortemporary_buffer
Asignadores polimórficos
Cuando se trabaja con versiones anteriores de la biblioteca estándar, asignadores utilizan como argumentos para plantillas crean problemas porque están obligados por tipo. Lo que esto significa es que un vector creado usando std :: vector
los myalloc parte de la plantilla simplemente define el método utilizado para asignar memoria- no afecta realmente el tipo de datos gestionados por la plantilla. Así, en ambos casos, que está creado un vector sostener int datos - los tipos son los mismos. La única diferencia es el método en el que se asigna la memoria (la primera utiliza técnicas de asignación de memoria estándar, mientras que el segundo utiliza un asignador personalizado).
El uso de asignadores polimórficas elimina este problema mediante la definición de una clase de memoria base abstracta, memory_resource, que se utilizará para todos los asignadores de memoria. Esta clase abstracta define los siguientes métodos virtuales puros:
allocatedeallocateis_equal ()