O que são contêineres STL em C++

O Que Sao Conteineres Stl Em C



Em C++, STL (Biblioteca de Modelos Padrão), containers são objetos usados ​​para armazenar as coleções de outros objetos. Eles funcionam de maneira semelhante aos modelos de classe e oferecem suporte a um grande número de tipos de elementos e fornecem funções de membro para acessar seus elementos diretamente ou por meio de iteradores.

Tipos de Contêineres C++ STL

Em C++, existem três tipos de STL containers , listados abaixo:







1: Contêineres Sequenciais

Em C++, contêineres sequenciais nos permitem armazenar itens que podem ser recuperados sequencialmente. Esses containers são codificados como arrays ou listas encadeadas de estruturas de dados. Alguns tipos de contêineres sequenciais são fornecidos a seguir.



  • Vetor: É uma matriz de tamanho dinâmico que é armazenada na memória de maneira contígua.
  • De que: Ele representa uma fila dupla que oferece suporte a operações de inserção e exclusão.
  • Variedade: É um array estático alocado durante a compilação, mantendo seu tamanho fixo.
  • Lista: É uma lista duplamente encadeada que realiza inserção e exclusão rápida de elementos em qualquer lugar da lista.
  • Lista de encaminhamento: É uma lista de encadeamento simples como uma lista, mas você só pode percorrê-la em uma direção.

Exemplo



Neste exemplo, usaremos o classe de vetor para mostrar como um sequencial recipiente opera.





#include
#include
usando namespace std;
int principal ( ) {
// inicializar um vetor de int tipo
vetor < int > números = { 10 , 2 , 16 , 70 , 5 } ;
// imprimir o vetor
cout << 'Os números são: ' ;
para ( auto & eu: num )
{
cout << eu << ', ' ;
}
retornar 0 ;
}

O código acima acima demonstra o uso de sequencial containers em formato vetorial, que permite o armazenamento de matrizes inteiras. O programa inicializa um vetor do tipo inteiro, atribui valores a ele e os imprime usando um loop. Este exemplo mostra como é fácil armazenar e acessar dados em C++ usando o recipiente sequencial .



2: Contêineres Associativos

Os recipientes associativos nos permite armazenar elementos na ordem específica definida pelo operador de comparação. Diferente recipientes sequenciais , a ordem dos elementos em recipientes associativos é mantida por meio de chaves que permitem aos usuários organizar e acessar os elementos. Quando um elemento é inserido em um recipiente associativo , ele é classificado automaticamente na posição correta com base em sua chave. Esses tipos de contêineres são implementados internamente como estruturas de dados de árvore binária.

O associativo containers são categorizados como:

  • Mapa: uma coleção de pares chave-valor que foram classificados usando chaves exclusivas
  • Multimapa: uma coleção de pares chave-valor que foram classificados usando chaves
  • Definir: Chaves únicas coletadas e organizadas por chaves.
  • Conjunto múltiplo: uma coleção de chaves que foram classificadas usando chaves

Exemplo

Para ilustrar como um associativo recipiente funciona, vamos usar o definir classe neste exemplo.

#include
#include
usando namespace std;
int principal ( )
{
// inicializar um definir de int tipo
definir < int > números = { 10 , 2 , 16 , 70 , 5 } ;
// imprimir o definir
cout << 'Os números são: ' ;
para ( auto & eu: num )
{
cout << eu << ', ' ;
}
retornar 0 ;
}

O código acima inicializa um conjunto de inteiros em C++, que é um exemplo de contêiner associativo. O conjunto garante que os elementos sejam classificados em ordem crescente por padrão. O código então imprime os números no conjunto usando um loop for.

3: Contêineres Associativos Não Ordenados

Em C++, associativo não ordenado containers são usados ​​para fornecer as versões não classificadas de um associativo recipiente . Eles são implementados internamente como estruturas de dados de tabela de hash. O associativo containers são categorizados como:

  • Mapa não ordenado: uma coleção de pares chave-valor que foram hash usando chaves exclusivas.
  • Multimapa não ordenado: a coleção de pares chave-valor que foi hash usando chaves.
  • Conjunto não ordenado: uma coleção de chaves exclusivas que foram hash usando chaves.
  • Multiset não ordenado: uma coleção de chaves que foram hash usando chaves.

Exemplo

Para ilustrar como um associativo não ordenado recipiente funciona, vamos usar o conjunto não ordenado classe neste exemplo.

#include
#include
usando namespace std;
int principal ( )
{
// inicializar um unordered_set de int tipo
conjunto_desordenado < int > números = { 10 , 2 , 16 , 70 , 5 } ;
// imprimir o definir
cout << 'Os números são: ' ;
para ( auto & eu: num )
{
cout << eu << ', ' ;
}
retornar 0 ;
}

Conclusão

Um STL C++ recipiente é o objeto detentor para armazenar a coleção de outros objetos. Eles funcionam de forma semelhante aos modelos de classe e suportam um grande número de tipos de elementos. Neste tutorial, discutimos os tipos mais usados ​​de contêineres STL C++, que são contêineres sequenciais, contêineres associativos assim como contêineres associativos não ordenados .