Biblioteca padrão C ++ - C++ Standard Library
Biblioteca padrão C ++ |
---|
Recipientes |
Biblioteca padrão C |
Na linguagem de programação C ++ , a C ++ Standard Library é uma coleção de classes e funções , que são escritas na linguagem central e parte do próprio C ++ ISO Standard.
Visão geral
A C ++ Standard Library fornece vários contêineres genéricos, funções para usar e manipular esses contêineres, objetos de função, strings e fluxos genéricos (incluindo E / S interativa e de arquivo), suporte para alguns recursos de linguagem e funções para tarefas diárias, como encontrar o quadrado raiz de um número. A Biblioteca Padrão C ++ também incorpora a maioria dos cabeçalhos da biblioteca padrão ISO C terminando com ".h", mas seu uso está obsoleto. Nenhum outro cabeçalho na Biblioteca Padrão C ++ termina em ".h". Os recursos da C ++ Standard Library são declarados no std
namespace .
A C ++ Standard Library é baseada nas convenções introduzidas pela Standard Template Library (STL) e foi influenciada por pesquisas em programação genérica e desenvolvedores da STL, como Alexander Stepanov e Meng Lee. Embora a C ++ Standard Library e o STL compartilhem muitos recursos, nenhum deles é um superconjunto estrito do outro.
Um recurso digno de nota da Biblioteca Padrão C ++ é que ela não apenas especifica a sintaxe e a semântica dos algoritmos genéricos, mas também impõe requisitos ao seu desempenho. Esses requisitos de desempenho geralmente correspondem a um algoritmo bem conhecido, que é esperado, mas não obrigatório. Na maioria dos casos, isso requer tempo linear O ( n ) ou tempo linear O ( n log n ), mas em alguns casos limites superiores são permitidos, como o tempo quasilinear O ( n log 2 n ) para classificação estável (para permitir no local classificação de mesclagem ). Anteriormente, a classificação só era necessária para levar O ( n log n ) em média, permitindo o uso de quicksort , que é rápido na prática, mas tem desempenho de pior caso ruim, mas introsort foi introduzido para permitir desempenho médio rápido e pior complexidade de caso e, a partir do C ++ 11 , a classificação é garantida para ser, no mínimo, linear. Em outros casos, os requisitos permanecem laxer, tais como selecção , que só é necessário para ser linear, em média (como em QuickSelect ), não exigindo pior caso linear como na introselect .
A C ++ Standard Library passou por padronização ISO como parte do esforço de padronização C ++ ISO e está passando por um trabalho adicional com relação à padronização de funcionalidade expandida.
Implementações
Biblioteca padrão GNU C ++ (libstdc ++)
A biblioteca é parte das fontes do GCC [1] e lançada como GPLv3 com uma exceção para vincular a aplicação de código fechado quando construída com o GCC [2] . A versão atual é 11.
Biblioteca Microsoft C ++ Standard (STL)
Na CppCon 2019 em 16 de setembro de 2019, a Microsoft anunciou o lançamento de sua implementação da C ++ Standard Library (também conhecida como STL) como código aberto . Ele está hospedado no GitHub e licenciado pela Apache License 2.0 com LLVM Exception.
Biblioteca padrão Apache C ++
A Apache C ++ Standard Library é outra implementação de código aberto. Foi originalmente desenvolvido comercialmente pela Rogue Wave Software e mais tarde doado à Apache Software Foundation . No entanto, depois de mais de cinco anos sem um lançamento, a diretoria da Apache Software Foundation decidiu encerrar este projeto e movê-lo para o Apache Attic .
Biblioteca padrão LLVM C ++
O projeto LLVM inclui uma implementação da Biblioteca Padrão C ++ chamada libc ++ , com licença dupla sob a Licença MIT e a licença UIUC . Desde a v9.0.0, foi relicenciado para a Licença Apache 2.0 com Exceções LLVM.
Cabeçalhos padrão
Os arquivos a seguir contêm as declarações da Biblioteca Padrão C ++.
Recipientes
- <array>
- Novo em C ++ 11 e TR1 . Fornece o modelo de classe de contêiner
std::array
, um contêiner para uma matriz de tamanho fixo. - <bitset>
- Fornece a classe de contêiner especializada
std::bitset
, uma matriz de bits . - <deque>
- Fornece o modelo de classe de contêiner
std::deque
, uma fila dupla . - <forward_list>
- Novo em C ++ 11 e TR1 . Fornece o modelo de classe de contêiner
std::forward_list
, uma lista vinculada individualmente . - <list>
- Fornece o modelo de classe de contêiner
std::list
, uma lista duplamente vinculada . - <map>
- Fornece os modelos de classe de contêiner
std::map
estd::multimap
, matriz associativa classificada e multimap . - <queue>
- Fornece a classe do adaptador de contêiner
std::queue
, uma fila de terminação única estd::priority_queue
uma fila de prioridade . - <set>
- Fornece os modelos de classe de contêiner
std::set
estd::multiset
contêineres ou conjuntos associativos classificados . - <pilha>
- Fornece a classe do adaptador de contêiner
std::stack
, uma pilha . - <mapa_desordenado>
- Novo em C ++ 11 e TR1 . Fornece o modelo de classe recipiente
std::unordered_map
estd::unordered_multimap
, tabelas de hash . - <unordered_set>
- Novo em C ++ 11 e TR1 . Fornece o modelo de classe de contêiner
std::unordered_set
estd::unordered_multiset
. - <vetor>
- Fornece o modelo de classe de contêiner
std::vector
, uma matriz dinâmica .
Em geral
- <algoritmo>
- Fornece definições de muitos algoritmos de contêiner .
- <crono>
- Fornece elementos de tempo, tais como
std::chrono::duration
,std::chrono::time_point
e relógios.
- <funcional>
- Fornece vários objetos de função , projetados para uso com os algoritmos padrão.
- <iterator>
- Fornece classes e modelos para trabalhar com iteradores .
- <memória>
- Fornece recursos para gerenciamento de memória em C ++, incluindo o modelo de classe
std::unique_ptr
. - <stdexcept>
- Contém classes de exceção padrão como
std::logic_error
estd::runtime_error
, ambas derivadas destd::exception
. - <tuplo>
- Novo em C ++ 11 e TR1. Fornece um modelo de classe
std::tuple
, uma tupla . - <utilidade>
- Fornece a classe de modelo
std::pair
, para trabalhar com pares de objetos ( tuplas de dois membros ), e o namespacestd::rel_ops
, para facilitar a sobrecarga do operador .
Localização
- <locale>
- Define classes e declara funções que encapsulam e manipulam as informações peculiares a uma localidade .
- <codecvt>
- Fornece facetas de conversão de código para várias codificações de caracteres.
Cordas
- <string>
- Fornece as classes e modelos de string padrão C ++ .
- <regex>
- Novo em C ++ 11 . Fornece utilitários para strings de correspondência de padrões usando expressões regulares .
Streams e entrada / saída
- <fstream>
- Fornece recursos para entrada e saída baseada em arquivo. Veja fstream .
- <iomanip>
- Fornece recursos para manipular a formatação de saída, como a base usada ao formatar inteiros e a precisão dos valores de ponto flutuante .
- <ios>
- Fornece vários tipos e funções básicas para a operação de iostreams.
- <iosfwd>
- Fornece declarações de encaminhamento de vários modelos de classe relacionados a E / S.
- <iostream>
- Fornece fundamentos de entrada e saída de C ++. Veja iostream .
- <istream>
- Fornece a classe de modelo
std::istream
e outras classes de suporte para entrada. - <ostream>
- Fornece a classe de modelo
std::ostream
e outras classes de suporte para saída. - <sstream>
- Fornece a classe de modelo
std::stringstream
e outras classes de suporte para manipulação de string. - <streambuf>
- Fornece funcionalidade de leitura e gravação de / para certos tipos de sequências de caracteres, como arquivos externos ou strings.
Suporte de linguas
- <exceção>
- Fornece vários tipos e funções relacionadas ao tratamento de exceções , incluindo
std::exception
a classe base de todas as exceções lançadas pela Biblioteca Padrão. - <limits>
- Fornece a classe de modelo
std::numeric_limits
, usada para descrever propriedades de tipos numéricos fundamentais. - <memory_resource>
- Adicionado em C ++ 17 . Fornece recursos para a criação de alocadores de memória polimórfica cujos comportamentos podem mudar em tempo de execução.
- <novo>
- Fornece operadores
new
edelete
outras funções e tipos que compõem os fundamentos do gerenciamento de memória C ++ . - <typeinfo>
- Fornece recursos para trabalhar com informações de tipo de tempo de execução C ++ .
- <versão>
- Adicionado em C ++ 20 . Fornece informações sobre a implementação da biblioteca padrão C ++.
Biblioteca de apoio a Threads
- <thread>
- Novo em C ++ 11 . Fornece classe e namespace para trabalhar com threads.
- <mutex>
- Novo em C ++ 11 . 30,4-1. Esta seção fornece mecanismos para exclusão mútua: mutexes, bloqueios e chamada uma vez.
- <variável_condição>
- Novo em C ++ 11 . 30,5-1. Variáveis de condição fornecem primitivos de sincronização usados para bloquear um encadeamento até que seja notificado por algum outro encadeamento de que alguma condição foi atendida ou até que a hora do sistema seja atingida.
- <futuro>
- Novo em C ++ 11 . 30.6.1-1. Descreve os componentes que um programa C ++ pode usar para recuperar em um thread o resultado (valor ou exceção) de uma função executada no mesmo thread ou em outro thread.
Biblioteca numérica
Componentes que os programas C ++ podem usar para realizar operações seminuméricas.
- <complex>
- O cabeçalho <complex> define um modelo de classe e várias funções para representar e manipular números complexos.
- <random>
- Facilidade para gerar números (pseudo-) aleatórios
- <valarray>
- Define cinco modelos de classe (valarray, slice_array, gslice_array, mask_array e indirect_array), duas classes (slice e gslice) e uma série de modelos de função relacionados para representar e manipular matrizes de valores.
- <numeric>
- Operações numéricas generalizadas.
Biblioteca padrão C
Cada cabeçalho da Biblioteca Padrão C está incluído na Biblioteca Padrão C ++ com um nome diferente, gerado removendo o .h e adicionando um 'c' no início; por exemplo, 'time.h' torna-se 'ctime'. A única diferença entre esses cabeçalhos e os cabeçalhos tradicionais da Biblioteca C padrão é que, sempre que possível, as funções devem ser colocadas no std :: namespace. No ISO C, as funções na biblioteca padrão podem ser implementadas por macros , o que não é permitido pelo ISO C ++.
Veja também
- Biblioteca padrão Apache C ++
- Boost (bibliotecas C ++)
- Biblioteca C POSIX
- Biblioteca padrão C
- Biblioteca padrão
- Relatório Técnico C ++ 1
Referências
Leitura adicional
- Stroustrup, Bjarne. A linguagem de programação C ++ . Addison-Wesley . ISBN 978-0321563842.
- Josuttis, Nicolai. The C ++ Standard Library - Um tutorial e referência . Addison-Wesley . ISBN 978-0-321-62321-8.
- Van Weert, Peter; Grégoire, Marc. Referência rápida da biblioteca padrão C ++ . Apress . ISBN 978-1484218754.
links externos
- Referência da biblioteca padrão C ++
- Referência da biblioteca padrão do Microsoft C ++
- Documentação do Rogue Wave SourcePro C ++
- Apache C ++ Standard Library Wiki , retirado em 15 de maio de 2014 (com base na Rogue Wave C ++ Standard Library 4.1.0)
- Documentação da biblioteca padrão STLport C ++
- A documentação online da Biblioteca GNU C ++
- Documentação da biblioteca padrão LLVM / Clang C ++