STL em c ++: tudo o que você precisa saber



Este artigo fornecerá um conhecimento detalhado e abrangente de STL em C ++ e também dará uma ideia sobre os diferentes contêineres.

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.

Container-STL-in-C++

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:

  1. Conjunto
  2. Multiset
  3. Mapa
  4. 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.