Obra: Resolução de problemas/Standard template library
Nível: médio
introdução na resolução dos problemas das competições de programação muito importante que competidor tenha um bom domínio das estruturas de dados básicas tais como pilhas filas vetores strings etc além de algoritmos diversos aqueles que já experimentaram programar usando linguagem sabem das dificuldades encontradas na resolução dos problemas toda vez que precisamos de uma estrutura de dados ou um algoritmo por mais simples que sejam devemos implementá los partir do zero perde se aí um tempo que pode ser precioso para resolução de um problema mais complexo os competidores que optarem pela linguagem poderão poupar esse tempo existe uma biblioteca padrão do que reúne um conjunto de implementações genéricas dos algoritmos estruturas de dados mais básicos essa biblioteca stl que stl standard template library ou stl uma biblioteca de algoritmos containers iteradores que implementa as estruturas de dados algoritmos básicos da ciência da computação stl baseada no conceito de programação genérica implementada usando se do conceito de templates do donde origina se seu nome essa técnica nos fornece um polimorfismo muito poderoso em tempo de compilação além disso podemos abstrair os aspectos complexos da implementação também reutilizar os componentes já implementados de maneira prática fácil conteúdo da stl containers one of the most useful kinds of classes is the container class that is class that holds objects of some other type bjarne stroustrup desenvolvedor implementador original da linguagem as classes containers são classes cujo objetivo agrupar objetos na stl todas essas classes são templates podem ser instanciadas para agrupar qualquer tipo de objeto os containers da stl pode ser dividida em três categorias sequences como próprio nome sugere são aqueles que organizam um grupo finito de objetos do mesmo tipo de forma estritamente linear vector lists deques double ended queues associative containers eles provêem mecanismos de recuperação dos dados através do uso de chaves associativas além de manterem uma ordenação entre os seus elementos set multiset map multimap map set permitem apenas uma instância de objeto por conjunto se múltiplas instâncias de objetos são necessárias devemos usar multimap ou multiset containers adapters eles são apenas variações dos containers acima eles não suportam iteradores stacks queues priority queues iterators os iteradores são generalizações dos ponteiros eles são objetos que apontam para outros objetos como próprio nome sugere iteradores são usados para iterar sobre um conjunto de objetos se um iterador aponta para um elemento do conjunto possível incrementá lo de modo apontar para elemento seguinte os iteradores são peças fundamentais para programação genérica pois fazem interface entre os containers os algoritmos os algoritmos geralmente têm como parâmetro os iteradores então basta os containers proverem acesso aos seus elementos através dos iteradores isso torna possível escrever algoritmos genéricos que operam sobr
s elementos através dos iteradores isso torna possível escrever algoritmos genéricos que operam sobre diferentes tipos de containers por mais distintos que sejam stl define diversos iteradores pré definidos um conjunto de funções para manipulá los algorithms stl já traz implementado um grande número de algoritmos de uso geral sendo assim uma das partes mais importantes úteis um mesmo algoritmo pode ser usado com maioria se não todos os containers providos pela stl ligações externas para um guia mais aprofundado sobre stl veja standard template library programmer guide em inglês