Está en la página 1de 7

25/3/2014

Biblioteca padro do C++ Wikipdia, a enciclopdia livre

Biblioteca padro do C++


Origem: Wikipdia, a enciclopdia livre.

Em C++, a biblioteca padro uma coleo de classes, funes e variveis escritas na prpria linguagem para facilitar o desenvolvimento de aplicaes. Tambm incorpora a biblioteca padro do C, e todas suas funcionalidades esto declaradas no espao de nomes s t d .

ndice
1 Viso geral 2 Lista de cabealhos 2.1 Containers 2.2 Uso geral 2.3 Cadeias de caracteres 2.4 Streams e entrada/sada 2.5 Funcionalidades numricas 2.6 Suporte linguagem C++ 2.7 Biblioteca padro do C 3 Descries detalhadas 3.1 <algorithm> 3.2 <fstream> 3.3 <functional> 3.4 <iostream> 3.5 <locale> 3.6 <map> 3.7 <set> 3.8 <sstream> 3.9 <string> 3.10 <vector> 4 Referncias 5 Ver tambm

Viso geral
A biblioteca padro do C++ fornece vrios containers genricos, funes que utilizam e manipulam tais containers, funes-objeto, cadeias de caracteres e streams genricos, suporte para algumas facilidades da linguagem e funes de uso geral, como funes matemticas. Os containers genricos so uma implementao de elementos conhecidos em estrutura de dados. Diferentes containers compartilham uma mesma interface, o acesso o mesmo. A escolha do uso geralmente depende da eficincia em determinadas tarefas que o container dever desempenhar, o que est relacionado com a implementao interna da classe. Por exemplo, alguns containers so mais eficientes em busca e menos eficientes em inseres.
http://pt.wikipedia.org/wiki/Biblioteca_padr%C3%A3o_do_C%2B%2B#.3Cfstream.3E 1/7

25/3/2014

Biblioteca padro do C++ Wikipdia, a enciclopdia livre

Ela tambm incorpora a biblioteca padro do C90. Desta forma, as biblioteca-padro do C sofreram uma adequao para pertencerem tambm ao espao de nomes s t d : retirou-se o sufixo . hdos nomes dos arquivos de cabealho, e adicionou-se o prefixo cpara indicar que pertence linguagem C. Os algoritmos, containers e iteradores dessa biblioteca so baseados na STL, e por esse motivo esses dois termos so muitas vezes confundidos. O iterador um conceito importante da STL, e, portanto, da biblioteca padro. Ele permite que os algoritmos usem os containers de forma genrica.

Lista de cabealhos
Containers
< b i t s e t >-

manipulao de arranjo de bits, algo parecido com v e c t o r < b o o l >(que uma construo 1 no recomendada ) < d e q u e >- manipulao de lista duplamente ligada < l i s t >- manipulao de lista simplesmente ligada < m a p >- manipulao de conjunto associativo ordenado (associao: chave valor) < q u e u e >- manipulao de lista FIFO < s e t >- manipulao de conjunto < s t a c k >- manipulao de lista LIFO < v e c t o r >- manipulao de arranjo

Uso geral
< a l g o r i t h m >-

algoritmos genricos < f u n c t i o n a l >- funes-objeto < i t e r a t o r >- declarao de iterador < l o c a l e >- manipulao de diversas convenes culturais do utilizador, como a representao de nmeros, moeda e datas, para efeitos de internacionalizao < m e m o r y >- funes para o gerenciamento de memria < s t d e x c e p t >- especializao de < e x c e p t i o n > , fornece relatrios sobre excees < u t i l i t y >- operaes com pares de elementos (comparao e construo)

Cadeias de caracteres
< s t r i n g >-

manipulao de cadeia de caracteres

Streams e entrada/sada
< f s t r e a m >-

manipulao de fluxo de dados em arquivo < i o s >- declarao mais geral de fluxo de dados < i o s t r e a m >- manipulao de fluxo de dados padro do sistema (entrada padro, sada padro e sada de erros padro) < i o s f w d >- declarao dos fluxos de dados presentes na linguagem < i o m a n i p >- manipulao da apresentao e do processamento de fluxos de dados < i s t r e a m >- manipulao de entrada de dados < o s t r e a m >- manipulao de sada de dados < s s t r e a m >- manipulao de fluxo de dados em cadeias de caracteres
http://pt.wikipedia.org/wiki/Biblioteca_padr%C3%A3o_do_C%2B%2B#.3Cfstream.3E 2/7

25/3/2014

Biblioteca padro do C++ Wikipdia, a enciclopdia livre

< s t r e a m b u f >-

manipulao de buffers de fluxo de dados

Funcionalidades numricas
< c o m p l e x >-

manipulao de nmero complexo < n u m e r i c >- operaes com conjuntos numricos < v a l a r r a y >- arranjo de valores mutveis

Suporte linguagem C++


< e x c e p t i o n >-

manipulao de exceo < l i m i t s >- manipulao de limites numricos dos tipos embutidos na linguagem < n e w >- manipulao de alocao e desalocao de memria < t y p e i n f o >- auxlio para o RTTI do C++

Biblioteca padro do C
< c a s s e r t >-

adequao de < a s s e r t . h > < c c t y p e >- adequao de < c t y p e . h > < c e r r n o >- adequao de < e r r n o . h > < c f l o a t >- adequao de < f l o a t . h > < c l i m i t s >- adequao de < l i m i t s . h > < c m a t h >- adequao de < m a t h . h > < c s e t j m p >- adequao de < s e t j m p . h > < c s i g n a l >- adequao de < s i g n a l . h > < c s t d l i b >- adequao de < s t d l i b . h > < c s t d d e f >- adequao de < s t d d e f . h > < c s t d a r g >- adequao de < s t d a r g . h > < c t i m e >- adequao de < c s t d i o >- adequao de < s t d i o . h > < c s t r i n g >- adequao de < s t r i n g . h > < c w c h a r >- adequao de < w c h a r . h > < c w c t y p e >- adequao de < w c t y p e . h >

Descries detalhadas
< a l g o r i t h m >

Este cabealho fornece diversos algoritmos genricos teis para busca, ordenao e transformao de containers (estruturas de dados), entre outros. Ele podem ser invocados para diferentes containers atravs da interface comum dos iteradores, e de operadores especficos que cada algoritmo requisita da estrutura de dado usada. Os algoritmos geralmente so especificados atravs da posio de comeo e de fim da estrutura de dados, e o iterador no final da estrutura deve ser acessvel a partir do iterador no comeo da mesma estrutura atravs de seguidos incrementos no iterador. Alguns algoritmos requerem uma condio especial de entrada; por exemplo os algoritmos de busca binria, que requerem uma estrutura de dados j ordenada previamente. Notar entretanto que esse requerimento implcito e no detectvel em tempo de compilao, cabendo a responsalibilidade de atender aos requisitos ao desenvolvedor.

http://pt.wikipedia.org/wiki/Biblioteca_padr%C3%A3o_do_C%2B%2B#.3Cfstream.3E

3/7

25/3/2014

Biblioteca padro do C++ Wikipdia, a enciclopdia livre

Pode-se classificar os algoritmos dessa biblioteca em dois grandes grupos, os que realizam mutao no containers e os que no realizam mutao.2 Algoritmos de busca, comparao e contagem de elementos no realizam mutao, apenas lem o container e retornam como sada referncias para elementos da estrutura. Em contrapartida, algoritmos de ordenao, de cpia, de transformao e de adio ou remoo de elementos realizam mutao. Para algoritmos que realizam mutao, existe o sufixo especial _ c o p y , que indica que o algoritmo mantm intacto o container passado como parmetro, retornando na sada um novo container que corresponde ao container original mais o processamento realizado. Para todos os algoritmos, mutveis ou no, existe o sufixo especial _ i f , usado em algoritmos que envolvem comparao de elementos. Ele indica que uma funo de comparao est sendo passada por parmetro para o algoritmo, em favor da utilizao dos operadores padro de comparao fornecidos pelo tipo de dado do container.
< f s t r e a m >
s t d : : f s t r e a m um manipulador de fluxos de dados de arquivos de computador especializado

para o tipo de dado nativo c h a r . Ele permite ler e escrever em modo de texto (utiliza-se os operadores de deslocamento de bits, < <e > > ) ou binrio (utiliza-se os mtodos r e a de w r i t epara buffers de dado). A biblioteca padro tambm fornece classes para casos de uso de s t d : : f s t r e a msomente para leitura (s t d : : i f s t r e a m ) ou somente para escrita (s t d : : o f s t r e a m ). A implementao de s t d : : f s t r e a msegue o padro RAII. O gerenciamento do arquivo aberto (um recurso do sistema) de responsabilidade da classe. Isso implica que ao inicializar s t d : : f s t r e a m(atravs de informaes como o nome do arquivo e o modo de abertura) o recurso adquirido, e na destruio de s t d : : f s t r e a mo recurso liberado ao sistema automaticamente. Apesar da biblioteca padro fornecer o mtodo c l o s epara a liberao manual do arquivo ao sistema, o RAII permite que isso seja feito automaticamente quando a instncia de s t d : : f s t r e a msai de escopo no programa.
< f u n c t i o n a l >

Este cabealho fornece suporte para funes-objeto, classes que encapsulam funes de forma que a instncia da classe possa ser invocada tal qual uma funo qualquer. Por exemplo, as funes-objeto so usadas na STL para a passagem de predicados aos algoritmos genricos de < a l g o r i t h m > . So disponibilizadas funesobjeto unrias (que demandam um argumento) e binrias (que demandam dois argumentos), adaptadores que permitem converter ponteiros de funes em funes-objeto e adaptadores que permitem converter funesobjeto binrias em unrias ao associar um valor a um dos argumentos. O cabealho ainda define algumas funes-objeto de uso geral tais como operaes aritmticas e lgicas. Um exemplo e q u a l _ t o , uma funo-objeto binria que testa se dois valores so iguais. Nada mais que uma funo de comparao genrica encapsulada em uma classe.
< i o s t r e a m >

Este cabealho responsvel pela manipulao de fluxo de dados padro do sistema (entrada padro, sada padro e sada de erros padro) e representa uma evoluo do cabealho < s t d i o . h >da linguagem C. So apresentados os objetos c i n ,c o u t ,c e r re c l o gpara o envio e recebimento de dados dos fluxos de entrada, sada, erro sem buffer e erro com buffer, respectivamente; para isso usa-se os operadores de deslocamento de bits (< <e > > ).
http://pt.wikipedia.org/wiki/Biblioteca_padr%C3%A3o_do_C%2B%2B#.3Cfstream.3E 4/7

25/3/2014

Biblioteca padro do C++ Wikipdia, a enciclopdia livre

Tambm so fornecidos mtodos para a formatao do fluxo de dados, como w i d t h , que define uma largura para a sada, f i l l , que define um caractere especfico para ser impresso caso o fluxo menor que o mnimo esperado, e p r e c i s i o n , que define a quantidade de dgitos significativos de nmeros de ponto flutuante. Alguns compiladores so incapazes de remover cdigo desnecessrio ao produzir executveis que incluem esta biblioteca atravs de ligao esttica. Por exemplo, um programa Ol Mundo usando-se a implementao GNU da biblioteca padro produz um executvel maior que o equivalente utilizando-se < c s t d i o > ,3 devido parcialmente a deficincias do ligador.4
< l o c a l e >

Este cabealho manipula diversas convenes culturais do utilizador, como a representao de nmeros, moeda e datas, para efeitos de internacionalizao. A biblioteca faz uso da faceta, uma interface para um servio dum locale especfico. Cada locale possui um conjunto de facetas. O construtor padro da classe s t d : : l o c a l e define uma cpia do locale da mquina executando o programa, com as convenes atuais do utilizador.
< m a p >

O container s t d : : m a p < K e y ,D a t a ,C o m p a r e ,A l l o c > um conjunto associativo ordenado que mapeia um objetos do tipo K e y(a chave) em objetos do tipo D a t a(o valor). As chaves so nicas: se um objeto inserido com uma chave j existente, o valor presente substitudo pelo valor inserido. O tempo requerido para acesso aleatrio a cada elemento , e os iteradores atribudos no so invalidados aps as operaes de insero e remoo. Portanto, a implementao mais usada para o container a rvore de busca binria auto-balanceada (ainda que qualquer outra estrutura de dados que respeite as restries de complexidade computacional pode ser usada, como uma skiplist ). Internamente, os elementos do mapa so ordenados atravs das chaves. Uma variao do container o s t d : : m u l t i m a p , que permite chaves repetidas.
< s e t >

O container s t d : : s e t < K e y ,C o m p a r e ,A l l o c > um conjunto associativo que permite acesso aleatrio rpido aos dados. Difere do container s t d : : m a ppois os valores dos elementos tambm so suas chaves. Por esse motivo, cada valor (e, portanto, sua chave) nico, no pode repetir. O container pode ser acessado de forma bidirecional, a partir do comeo ou do fim. A implementao interna do container geralmente uma rvore de busca binria.5 Uma variao do container o s t d : : m u l t i s e t , um multiconjunto associativo, que permite valores repetidos.
< s s t r e a m >
s t d : : s t r i n g s t r e a m um manipulador de fluxos de dados de cadeias de caracteres especializado

para o tipo de dado nativo c h a r . Ele permite ler e escrever em modo de texto (utiliza-se os operadores de deslocamento de bits, < <e > > ) ou binrio (utiliza-se os mtodos r e a de w r i t epara buffers de dado). A biblioteca padro tambm fornece classes para casos de uso de s t d : : s t r i n g s t r e a msomente para leitura (s t d : : i s t r i n g s t r e a m ) ou somente para escrita (s t d : : o s t r i n g s t r e a m ).
http://pt.wikipedia.org/wiki/Biblioteca_padr%C3%A3o_do_C%2B%2B#.3Cfstream.3E 5/7

25/3/2014

Biblioteca padro do C++ Wikipdia, a enciclopdia livre

< s t r i n g >

O container s t d : : s t r i n g uma cadeia de caracteres especializada para o tipo de dado nativo c h a r . Ele remove vrios dos problemas introduzidos pela linguagem C ao confiar no programador no gerenciamento de cadeias de caractere, encapsulando internamente rotinas e consideraes que o programador no precisa tomar conhecimento. Ele tambm permite converso de e para cadeias de texto do C (c o n s tc h a r * ). Diferente de uma cadeia de caracteres em C, que um ponteiro para uma regio de memria contendo a cadeia, o contedo de s t d : : s t r i n g armazenada por valor. Por esse motivo, a operao de cpia possui tempo . Para evitar cpias desnecessrias, a passagem de cadeias de texto como parmetro de funes geralmente feita por referncia constante. Isso possui uma segunda vantagem pois permite que a mesma funo possa receber implicitamente uma cadeia de caracteres do C, sem a necessidade de sobrecarga para o tipo de dado c o n s tc h a r * . A especializao para cadeias de c h a rnem sempre desejada. Por exemplo, uma aplicao que implemente UTF-32 (o mapeamento do padro Unicode para 32 bits, suficiente para representar todo o padro) deve reservar quatro bytes para cada caractere, enquanto um c h a rarmazena somente um byte. Por isso, o conceito genrico de cadeia de texto implementado no container s t d : : b a s i c _ s t r i n g , que pode ser especializado 6 para qualquer tipo de dado. No caso de UTF-32, pode-se usar uma especializao do container genrico para um tipo de dado que armazene pelo menos quatro bytes. Como na maioria das vezes um c h a r suficiente, a especializao tambm definida no padro por convenincia.
< v e c t o r >

O container s t d : : v e c t o r um arranjo e generaliza o conceito dum vector em C. Pode ser acessado atravs de ndices para o elementos assim como em C (atravs de uma sobrecarga do operador adequado) e sua memria alocada de forma contgua. Entretanto, diferente dum vetor em C, o tamanho do container dinmico com gerenciamento automtico e h uma flexibilidade maior para adicionar elementos. Alm de conhecer seu tamanho atual, uma instncia de s t d : : v e c t o rtambm conhece quantos elementos ainda pode alocar antes de precisar de redimensionamento: a alocao feita em blocos e no para cada elemento, e possvel definir manualmente qual o tamanho do bloco. Diferente dum vetor em C, s t d : : v e c t o rfornece o mtodo a tpara acessar elementos pelo ndice, mas com tratamento de excees para o caso de ndices invlidos (valores negativos ou acima do tamanho atual do container). Para inseres no meio do container s t d : : l i s t mais eficiente. Enquanto s t d : : v e c t o rfornece insero eficiente no final do container, s t d : : d e q u efornece insero eficiente tanto no comeo quanto no final do 7 container. Alm de insero eficiente no final, pontos positivos do s t d : : v e c t o rincluem acesso em tempo 8 constante a qualquer elemento atravs do ndice e iterao em tempo linear. Sendo um container genrico, pode ser especializado para diferentes tipos de dado. Entretanto, desaconselhase especializ-lo para o tipo booleano nativo, b o o l ,1 cuja especializao j consta na biblioteca padro.

Referncias
1. a b Herb Sutter (20 de outubro de 1999). vector<bool>: More Problems, Better Solutions (http://www.gotw.ca/publications/N1211.pdf) (PDF) (em ingls). WG21 N1211. Gotw.ca. Pgina visitada em 19 de agosto de 2007. 2. Algorithms (http://wwwasd.web.cern.ch/wwwasd/lhc++/RW/stdlibcr/Alg_5157.htm) (em ingls). Rogue Wave Software (1996). Pgina visitada em 28 de outubro de 2007. 3. Ttulo no preenchido, favor adicionar (http://pineight.com/rant/#cbloatbloat).
http://pt.wikipedia.org/wiki/Biblioteca_padr%C3%A3o_do_C%2B%2B#.3Cfstream.3E 6/7

25/3/2014

Biblioteca padro do C++ Wikipdia, a enciclopdia livre

4. libstdc++-v3 FAQ, seo 2.5 (http://gcc.gnu.org/onlinedocs/libstdc++/faq/index.html#2_5). 5. set C++ Reference (http://www.cplusplus.com/reference/stl/set/) (em ingls). C++ Library Reference. cplusplus.com - The C++ Resources Network. Pgina visitada em 26 de junho de 2008. 6. Strings library C++ Reference (http://www.cplusplus.com/reference/string/) (em ingls). C++ Library Reference. cplusplus.com - The C++ Resources Network. Pgina visitada em 26 de junho de 2008. 7. The vector Data Abstraction (http://www2.roguewave.com/support/docs/sourcepro/edition9update1/html/stdlibug/5-1.html) (em ingls). Rogue Wave Software. Roguewave.com. Pgina visitada em 26 de fevereiro de 2008. 8. vector C++ Reference (http://www.cplusplus.com/reference/stl/vector/) (em ingls). C++ Library Reference. cplusplus.com - The C++ Resources Network. Pgina visitada em 26 de junho de 2008.

Ver tambm
C++ Standard Template Library Biblioteca Boost Obtida de "http://pt.wikipedia.org/w/index.php?title=Biblioteca_padro_do_C%2B%2B&oldid=34796632" Categorias: Bibliotecas de rotinas C++ Esta pgina foi modificada pela ltima vez (s) 16h12min de 26 de maro de 2013. Este texto disponibilizado nos termos da licena Atribuio-Partilha nos Mesmos Termos 3.0 no Adaptada (CC BY-SA 3.0); pode estar sujeito a condies adicionais. Consulte as condies de uso para mais detalhes.

http://pt.wikipedia.org/wiki/Biblioteca_padr%C3%A3o_do_C%2B%2B#.3Cfstream.3E

7/7

También podría gustarte