A Standard Template Library (STL) é um conjunto de classes de template C ++ para fornecer estruturas de dados de programação comuns e funções como listas, pilhas, arrays, etc.
Continuando com este artigo sobre STL em C ++
Modelos C ++
C ++ nos fornece um recurso de modelos que permite que funções e classes operem com tipos genéricos. Isso permite a reutilização de uma função ou classe e permite que ela trabalhe em muitos tipos de dados diferentes sem ser reescrita para cada um.
Continuando com este artigo sobre STL em C ++
Funções genéricas e STL
Ao programar muitas vezes, é necessário criar funções que realizem as mesmas operações, mas trabalhem com diferentes tipos de dados. Portanto, para superar esse problema, o C ++ fornece um recurso para criar uma única função genérica em vez de muitas funções que podem funcionar com diferentes tipos de dados usando o parâmetro de modelo. A coleção dessas classes e funções genéricas é chamada de Standard Template Library (STL)
Os componentes de STL que agora fazem parte da biblioteca C ++ padrão são definidos no namespace std. Devemos, portanto, usar a diretiva using namespace para importá-los em nosso programa.
Sintaxe:
Usando namespace std
STL tem três componentes
Recipientes
Algoritmos
Iteradores
Esses três componentes trabalham juntos em sinergia para fornecer suporte a uma variedade de soluções de programação. O algoritmo emprega iteradores para realizar operações armazenadas em contêineres.
Um contêiner é um objeto que armazena dados na memória de forma organizada. Os contêineres em STL são implementados por classes de modelo e, portanto, podem ser facilmente modificados e personalizados para conter diferentes tipos de dados.
Um procedimento usado para processar os dados contidos nos contêineres é definido como um algoritmo. O STL inclui muitos tipos diferentes de algoritmos para fornecer suporte a tarefas como inicialização, pesquisa, cópia, classificação e mesclagem, cópia, classificação e mesclagem. Algoritmos são implementados por funções de modelo.
Um iterador pode ser definido como um objeto que aponta para um elemento em um contêiner. Os iteradores podem ser usados para mover-se pelo conteúdo dos contêineres. Os iteradores são tratados como ponteiros. Podemos aumentá-los ou diminuí-los. Os iteradores conectam o algoritmo aos contêineres e desempenham um papel importante na manipulação dos dados armazenados nos contêineres.
Continuando com este artigo sobre STL em C ++
Recipientes
STL define dez contêineres que são agrupados em três categorias.
Recipientes | Descrição | Arquivo de cabeçalho | Iterator |
Vetor | Ele pode ser definido como um array dinâmico. Ele permite o acesso direto a qualquer elemento. | Acesso aleatório | |
Lista | É uma lista linear bidirecional. Ele permite a inserção e exclusão em qualquer lugar | Bidirecional | |
e | É uma fila dupla. Permite inserções e exclusões em ambas as extremidades. Permite acesso direto a qualquer elemento. | Acesso aleatório | |
conjunto | É um contêiner associado para armazenamento de conjuntos exclusivos. Permite pesquisa rápida. | Bidirecional | |
multiset | É um contêiner associado para armazenar conjuntos não exclusivos. | Bidirecional | |
mapa | É um contêiner associado para armazenar pares de chave / valor exclusivos. Cada chave está associada a apenas um valor. kotlin é melhor que java | Bidirecional | |
multimapa | É um contêiner associado para armazenar chave / valor no qual uma chave pode ser associada a mais de um valor (mapeamento um para muitos). Ele permite uma pesquisa baseada em chave. | Bidirecional | |
pilha | Uma pilha padrão segue o último a entrar, primeiro a sair (LIFO) | Sem iterador | |
fila | Uma fila padrão segue o primeiro a entrar, primeiro a sair (FIFO) | Sem iterador | |
Fila de prioridade | O primeiro elemento a sair é sempre o elemento de maior prioridade | Sem iterador |
Contêineres de sequência
Os contêineres de sequência armazenam elementos em uma ordem linear. Todos os elementos estão relacionados entre si por sua posição ao longo da linha. Eles permitem a inserção de elementos e todos eles suportam várias operações sobre eles.
O STL fornece três tipos de elementos de sequência:
- Vetor
- Lista
- e
Contêineres associativos:
Eles são projetados de forma que possam suportar o acesso direto aos elementos usando as teclas. Eles não são sequenciais. Existem quatro tipos de
recipientes associativos:
- Conjunto
- Multiset
- Mapa
- Multimapa
Todos os contêineres acima armazenam dados em uma estrutura chamada árvore que facilita o rápido
pesquisa, exclusão e inserção, ao contrário do sequencial. O conjunto de contêineres ou multiset pode armazenar vários itens e fornecer operações para manipulá-los usando os valores como as chaves.
E mapa ou multimapa são usados para armazenar itens em pares, um chamado de chave e outro
chamado de valor.
Contêineres derivados:
O STL fornece três contêineres derivados, a saber, pilha, fila e priority_queue. Eles também são conhecidos como adaptadores de contêiner.
Existem três tipos de recipientes derivados:
1. Pilha
2.Queue
3.Priority_quue
Pilhas, fila e fila de prioridade podem ser facilmente criadas a partir de diferentes contêineres de sequência. Os contêineres derivados não suportam iteradores e, portanto, não podemos usá-los para manipulação de dados. No entanto, eles oferecem suporte a duas funções-membro pop () e push () para implementar operações de exclusão e inserção.
Continuando com este artigo sobre STL em C ++
Algoritmos
Algoritmos são funções que podem ser usadas geralmente em uma variedade de contêineres para processar seu conteúdo. Embora cada contêiner forneça funções para suas operações básicas, o STL fornece mais de sessenta algoritmos padrão para oferecer suporte a operações mais extensas ou complexas. Os algoritmos padrão também nos permitem trabalhar com dois tipos diferentes de contêineres ao mesmo tempo.
Os algoritmos STL reforçam a filosofia de reutilização. Ao usar esses algoritmos, os programadores podem economizar muito tempo e esforço. Para ter acesso aos algoritmos STL, devemos incluí-los em nosso programa.
O algoritmo STL, com base na natureza das operações que realizam, pode ser categorizado como em:
Algoritmos não mutantes
Algoritmos mutantes
Algoritmos de classificação
Definir algoritmos
Algoritmo relacional
Continuando com este artigo sobre STL em C ++
Iteradores:
Os iteradores agem como ponteiros e são usados para acessar elementos do contêiner. Usamos iteradores para percorrer o conteúdo dos contêineres. Os iteradores são tratados como ponteiros. Podemos aumentá-los ou diminuí-los de acordo com nossos requisitos. Iteradores conectam contêineres com algoritmos e desempenham um papel vital na manipulação de dados armazenados nos contêineres. Eles são freqüentemente usados para passar de um elemento para outro; esse processo é chamado de iteração através do contêiner.
Existem cinco tipos de iteradores:
1. Entrada
2. Saída
3. Avançar
4.Bidirecional
php insert into $ table
5. Aleatório
Iterator | Método de acesso | Direção do movimento | Capacidade de E / S | Observação |
Entrada | Linear | Avançar apenas | Somente leitura | Não pode ser salvo |
Resultado | Linear | Avançar apenas | Só escrever | Não pode ser salvo |
frente | Linear | Avançar apenas | Ler escrever | Pode ser salvo |
Bidirecional | Linear | Para frente e para trás | Ler escrever | Pode ser salvo |
Aleatória | Aleatória | Para frente e para trás | Ler escrever | Pode ser salvo |
Diferentes tipos de iteradores devem ser usados com os diferentes tipos de contêineres de forma que apenas
seqüência e contêineres associativos podem viajar através de iteradores. Cada tipo de iterador é usado para executar certas funções. Os iteradores de entrada e saída suportam o mínimo de funções. Eles podem ser usados apenas para passar em um recipiente. Os iteradores diretos suportam todas as operações de iteradores de entrada e saída e também mantêm sua posição no contêiner. Um iterador bidirecional, ao mesmo tempo que oferece suporte a todas as operações de iteradores diretos, oferece a capacidade de se mover para trás no contêiner.
Assim, chegamos ao fim deste artigo sobre ‘STL em C ++’. Se você deseja saber mais, confira o pela Edureka, uma empresa de aprendizagem online confiável. O curso de certificação e treinamento Java J2EE e SOA da Edureka foi projetado para treiná-lo tanto para os conceitos básicos e avançados do Java, juntamente com várias estruturas Java como Hibernate e Spring
Tem alguma questão para nós? Mencione isso na seção de comentários deste blog e entraremos em contato com você o mais breve possível.