As categorias da biblioteca c ++ padrão
A documentação biblioteca padrão utiliza uma abordagem formal que você vai achar difícil de ler e ainda mais difícil de entender. A melhor maneira de começar é para quebrar a biblioteca padrão em pedaços menores. Você pode categorizar as funções da biblioteca padrão em um número de maneiras. Uma das abordagens mais comuns é a utilização das seguintes categorias:
Conteúdo
- Video: biblioteca c;c++
- Containers
- Iterators
- Algoritmos
- Functors
- Serviços de utilidade pública
- Adaptadores
- Video: aprendendo c++ de forma descomplicada lição 08 ( bibliotecas e variáveis )
- Allocators
- Video: linguagem c - aula 002 - teoria, preferências, avisos, bibliotecas, tipos de dados e variáveis
- Allocators polimórficos
Video: biblioteca c;c++
Containers
Containers funcionam exatamente como os recipientes em sua casa - eles segurar alguma coisa. Por exemplo, ambas as filas e deques são os tipos de recipientes. A categoria Containers não contém quaisquer funções, mas contém uma série de tipos, incluindo o seguinte:
basic_stringbit_vectorbitsetchar_producerdequehashlistmapmultimapmultisetpriority_queuequeueropesetsliststackvector
Iterators
Iterators enumerar algo. Quando você cria uma lista de itens, em seguida, passar por isso itens lista de verificação off, você está enumerando a lista. Usando iteradores ajuda a criar listas de itens e manipulá-los de maneiras específicas. O tipo de iterador que você cria é importante porque alguns iterators deixá-lo ir para a frente somente, alguns podem ir em qualquer direção, e alguns podem escolher os itens de forma aleatória. Cada tipo de iterador tem sua finalidade específica.
A categoria Iterators inclui uma série de tipos. Estes tipos determinar o tipo de iterador que você criar no seu código e as capacidades do que iterador. A seguir está uma lista dos 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
A biblioteca padrão também inclui um número de funções específicas de iterador. Estas funções ajudá-lo a executar tarefas como antecedência (incremento) o iterador por um certo número de posições. Você também pode medir a distância entre o início eo fim do iterador. O seguinte é uma lista de funções de iterador:
advancedistancedistance_typeiterator_categoryvalue_type
algoritmos
algoritmos executar manipulações de dados, tais como a substituição, localização, ou triagem informações. É difícil criar um aplicativo substancial sem usar um. Não existem quaisquer tipos na categoria Algoritmos. O seguinte é uma lista de funções 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
functors
functors são uma classe especial de objeto que age como se fosse uma função. Na maioria dos casos, você chamar um functor usando a mesma sintaxe que você usa para a função, mas functors possuem todos os bons elementos dos objetos, bem como, tais como a capacidade de instanciar-los em tempo de execução.
Functors vêm em uma série de formas. Por exemplo, um functor função binária aceita dois argumentos como entrada e fornece um resultado como saída. Functors incluir um número de tipos que determinam o tipo de função o código cria:
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
Serviços de utilidade pública
Serviços de utilidade pública são funções e tipos que executam tarefas de serviço pequenas dentro da biblioteca padrão. As funções são min (), max (), e os operadores relacionais. Os tipos são chart_traits (os traços de caracteres utilizados em outras funções da biblioteca padrão, tais como basic_string) e par (Um emparelhamento de dois valores heterogéneos).
adaptadores
adaptadores realizar conversões de uma espécie. Eles tornam possível adaptar um tipo de dados para outro. Em alguns casos, os adaptadores de executar a conversão de dados, tais como números negando. A categoria Adaptadores inclui uma função, ptr_fun (). Além disso, a categoria Adaptadores inclui os tipos listados aqui:
Video: Aprendendo C++ de forma descomplicada lição 08 ( Bibliotecas e Variáveis )
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 gerir os recursos, normalmente memória. Na maioria dos casos, você não vai precisar usar os membros da categoria Allocators. Por exemplo, você normalmente criar novos objetos usando o Novo operador. o Novo operador aloca memória para o objeto e, em seguida, cria-lo chamando o construtor do objeto.
Em casos raros, como quando você deseja implementar uma forma de pool de objetos, você pode querer separar o processo de alocação de memória do processo de construção. Neste caso, você chama construir() para executar a tarefa real de construir o objeto com base na sua definição de classe. A categoria Allocators tem as seguintes funções.
constructdestroyget_temporary_bufferreturn_temporary_bufferuninitialized_copyuninitialized_copy_nuninitialized_filluninitialized_fill_n
A categoria Allocators também inclui um par de tipos. Estes tipos ajudá-lo a gerenciar a memória, e você pode encontrar mais uso para eles do que você vai as funções nesta categoria. Os tipos são
Video: Linguagem C - Aula 002 - Teoria, Preferências, Avisos, Bibliotecas, Tipos de Dados e Variáveis
raw_storage_iteratortemporary_buffer
allocators polimórficos
Ao trabalhar com versões mais antigas da biblioteca padrão, alocadores utilizados como argumentos para modelos criar problemas, porque eles são obrigados por tipo. O que isto significa é que um vetor criado usando std :: vector
o myalloc parte do modelo simplesmente define o método usado para alocar a memória-que na verdade não afetar o tipo de dados gerenciados pelo modelo. Assim, em ambos os casos, você é criado um vetor segurar int dados - os tipos são os mesmos. A única diferença é o método em que a memória é alocada (a primeira utiliza técnicas de alocação de memória padrão, enquanto o segundo usa um alocador de costume).
Usando allocators polimórficos elimina este problema através da definição de uma classe de memória base abstrata, memory_resource, de usar para todos os alocadores de memória. Esta classe abstrata define os seguintes métodos virtuais puros:
allocatedeallocateis_equal ()