C ++ é uma das linguagens de programação mais poderosas e intimidantes que você pode encontrar como um iniciante. O motivo é bastante simples. Exige muito código para atingir a saída desejada. A biblioteca de modelos padrão, ou STL, pode ajudá-lo a resolver esse enigma.
Considerando a quantidade de tempo e esforço consumidos ao escrever código para funções como classificação e pesquisa, o STL pode ajudá-lo a realizar todas essas operações com apenas uma única linha de código. Esta biblioteca pode ser extremamente útil para a resolução de problemas e preparação para entrevistas técnicas.
O que é a biblioteca de modelos padrão?
A Standard Template Library, ou STL, é uma biblioteca C ++ que consiste em funções e contêineres pré-construídos. Inclui algumas classes de template proeminentes para estruturas de dados comuns como vetores, pilhas, filas e algumas funções algorítmicas úteis como busca binária para tornar a programação mais fácil.
A Biblioteca de Modelos Padrão em C ++ consiste em quatro componentes:
- Algoritmos
- Recipientes
- Funções
- Iteradores
Vamos dar uma olhada nos algoritmos e contêineres com mais detalhes, já que esses são os componentes mais comumente usados do STL.
Algoritmos em STL
O O arquivo de cabeçalho é uma parte do STL que consiste em várias funções algorítmicas que podem ser usadas em vez de codificá-las manualmente. Alguns dos algoritmos incluídos são pesquisa binária, classificação e reverso, que são extremamente úteis.
Para começar, você precisa importar o cabeçalho em seu arquivo C ++. A sintaxe é a seguinte:
#incluir
Para os próximos métodos, considere uma variável de matriz com os valores de {6, 2, 9, 1, 4} como exemplo.
int arr [] = {6, 2, 9, 1, 4};
ordenar()
O ordenar() função ajuda a classificar todos os elementos dentro da estrutura de dados especificada em ordem crescente. Esta função leva dois parâmetros: o iterador inicial e o iterador final.
Relacionado: Uma introdução ao algoritmo de classificação de mesclagem
Sintaxe:
classificar (start_iterator, end_iterator);
Aqui está um exemplo rápido:
classificar (arr, arr + 5);
para (int i = 0; i <5; i ++) {
cout << arr [i] << "";
}
Resultado:
1 2 4 6 9
marcha ré()
O marcha ré() função inverte a ordem dos elementos na estrutura de dados especificada. Ele aceita dois parâmetros: o iterador inicial e o iterador final.
Sintaxe:
reverso (start_iterator, end_iterator);
Aqui está um pequeno exemplo para o método acima:
reverso (arr, arr + 5);
para (int i = 0; i <5; i ++) {
cout << arr [i] << "";
}
Resultado:
4 1 9 2 6
* min_element () e * max_element ()
As funções * max_element () e * min_element () retorna o valor máximo e mínimo dentro da estrutura de dados especificada, respectivamente. Ambas as funções aceitam dois argumentos: o iterador inicial e o iterador final.
Sintaxe:
* max_element (start_iterator, end_iterator);
* min_element (start_iterator, end_iterator);
Vamos descobrir quais valores essas funções retornam ao chamá-las na matriz de exemplo:
cout << * max_element (arr, arr + 5) << endl;
cout << * min_elemento (arr, arr + 5) << endl;
Resultado:
9
1
binary_search ()
O binary_search () método é usado para descobrir se o valor especificado está presente dentro da estrutura de dados ou não. Ele aceita três argumentos: o iterador inicial, o iterador final e o valor que você deseja encontrar.
A pesquisa binária só funciona em estruturas de dados classificadas. Portanto, você precisará ligar para o ordenar() método primeiro antes do binary_search () método.
Sintaxe:
binary_search (start_iterator, end_iterator, value_to_find)
Aqui está uma demonstração desse método:
classificar (arr, arr + 5);
binary_search (arr, arr + 5, 2)? cout << "Elemento encontrado": cout << "Elemento não encontrado";
binary_search (arr, arr + 5, 7)? cout << "Elemento encontrado": cout << "Elemento não encontrado";
Resultado:
Elemento encontrado
Elemento não encontrado
contar()
O contar() método retorna a contagem de ocorrência do valor especificado dentro da estrutura de dados. Leva três argumentos: o iterador inicial, o iterador final e o valor a ser contado.
Sintaxe:
contagem (start_iterator, end_iterator, value_to_count);
Aqui está um exemplo desse método:
cout << contagem (arr, arr + 5, 2) << endl;
Resultado:
1
Recipientes em STL
Os contêineres são as estruturas de dados que armazenam objetos e dados. Vetores, listas, pilhas, filas, conjuntos e mapas são alguns dos exemplos que armazenam dados neles de acordo com o tipo de dados primitivo especificado. Você pode usar esses contêineres importando seus respectivos cabeçalhos no arquivo C ++.
Ao inicializar a variável do contêiner, você precisa mencionar os dados primitivos, como int, Caracteres, fragmento dentro de <> colchetes.
Vamos explorar alguns desses contêineres em mais detalhes:
Vetor
Os vetores são matrizes dinâmicas redimensionáveis e flexíveis de se trabalhar. Quando você insere ou exclui um elemento do vetor, ele ajusta automaticamente o tamanho do vetor. Isso é semelhante ao Estrutura de dados ArrayList em Java.
Sintaxe:
#incluir
vetor nome variável;
Aqui estão alguns métodos de vetor importantes:
- push_back (valor): Este método anexa os dados ao vetor.
- pop_back (): Este método remove o último elemento do vetor.
- inserir (índice, valor): Este método insere novos elementos antes do elemento na posição especificada.
- Tamanho(): Este método retorna o tamanho do vetor.
- vazio(): Este método verifica se o vetor está vazio ou não.
- frente(): Este método retorna o primeiro valor do vetor.
- voltar(): O método back retorna o último valor do vetor.
- em (índice): Este método retorna o valor na posição especificada.
- apagar (índice): O método erase remove elementos do índice fornecido.
- Claro(): Este método limpa todos os itens do vetor.
vetor v = {23, 12, 56, 10};
v.push_back (5);
v.push_back (25);
v.pop_back ();
auto i = inserção de v (v.begin () + 1, 7);
cout << "O tamanho do vetor fornecido" << v.size () << endl;
if (v.empty ()) {
cout << "O vetor está vazio" << endl;
} senão {
cout << "O vetor não está vazio" << endl;
}
cout << "O elemento na primeira posição é" << v.front () << endl;
cout << "O elemento na última posição é" << v.back () << endl;
cout << "O elemento na posição fornecida é" << v.at (4) << endl;
v.erase (v.begin () + 1);
para (int i = 0; i cout << v [i] << "";
}
Resultado:
O tamanho do vetor fornecido 6
O vetor não está vazio
O elemento na primeira posição é 23
O elemento na última posição é 5
O elemento na posição dada é 10
23 12 56 10 5
Fila
Na estrutura de dados da fila, os elementos são inseridos por trás e excluídos pela frente. Portanto, segue a abordagem FIFO ("primeiro a entrar, primeiro a sair").
Sintaxe:
#incluir
fila nome variável;
Aqui estão alguns métodos de fila importantes:
- push (valor): Este método adiciona elementos à fila.
- pop (): Este método exclui o primeiro elemento da fila.
- Tamanho(): Este método retorna o tamanho da fila.
- frente(): Este método retorna o primeiro elemento da fila.
- voltar(): Este método retorna o último elemento da fila.
fila q;
q.push (30);
q.push (40);
q.push (50);
q.push (60);
q.push (70);
cout << "O primeiro elemento é" << q.front () << endl;
cout << "O último elemento é" << q.back () << endl;
cout << "O tamanho da fila é" << q.size () << endl;
q.pop ();
cout << "Imprimindo todos os elementos da Fila" << endl;
while (! q.empty ()) {
cout << q.front () << "";
q.pop ();
}
Resultado:
O primeiro elemento é 30
O último elemento é 70
O tamanho da fila é 5
Impressão de todos os elementos da fila
40 50 60 70
Pilha
Os contêineres de pilha operam no método LIFO. LIFO significa "último a entrar, primeiro a sair". Os dados são enviados e retirados da mesma extremidade.
Sintaxe:
#incluir
pilha nome variável;
Aqui estão alguns métodos de pilha importantes:
- push (valor): Este método coloca o elemento na pilha.
- pop (): Este método exclui o elemento superior da pilha.
- principal(): Este método retorna o valor do último elemento inserido na pilha.
- Tamanho(): Este método retorna o tamanho da pilha.
- vazio(): Este método verifica se a pilha está vazia ou não.
pilha s;
s.push (30);
s.push (40);
s.push (50);
s.push (60);
cout << "O topo da pilha contém" << s.top () << endl;
s.pop ();
cout << "O topo da pilha após executar a operação pop:" << s.top () << endl;
cout << "Imprimindo todos os elementos da pilha" << endl;
while (! s.empty ()) {
cout << s.top () << "";
s.pop ();
}
Resultado:
O topo da pilha contém 60
O topo da pilha após realizar a operação pop: 50
Imprimir todos os elementos da pilha
50 40 30
Definir
Os contêineres de conjunto são usados para manter valores únicos e o valor do elemento não pode ser alterado depois de inserido no conjunto. Todos os elementos do conjunto são armazenados de forma ordenada. O conjunto de contêiner é semelhante ao definir estrutura de dados em Python.
Sintaxe:
#incluir
definir nome variável;
Aqui estão alguns métodos de definição importantes:
- inserir (valor): Este método insere elementos no conjunto.
- começar(): Este método retorna o iterador para o primeiro elemento do conjunto.
- fim(): Este método retorna o iterador para o último elemento do conjunto.
- Tamanho(): Este método retorna o tamanho do conjunto.
- vazio(): Este método verifica se o conjunto está vazio ou não.
- encontrar (valor): Este método retorna o iterador para o elemento passado no parâmetro. Se o elemento não for encontrado, esta função retorna o iterador ao final do conjunto.
- apagar (valor): Este método excluiu o elemento especificado do conjunto.
definir s;
s.insert (20);
s.insert (30);
s.insert (40);
s.insert (50);
s.insert (60);
s.insert (60);
s.insert (60);
auto i = s.begin ();
cout << "Elemento na primeira posição" << * i << endl;
cout << "O tamanho do conjunto" << s.size () << endl;
s.find (20)! = s.end ()? cout << "Elemento encontrado" << endl: cout << "Elemento não encontrado" << endl;
s.erase (30);
cout << "Imprimindo todos os elementos" << endl;
para (auto i = s.begin (); i! = s.end (); i ++) {
cout << * i << "";
}
Resultado:
Elemento na primeira posição 20
O tamanho do conjunto 5
Elemento encontrado
Imprimindo todos os elementos
20 40 50 60
C ++ não precisa ser difícil
Assim como qualquer outra habilidade, a prática é essencial para tirar o máximo proveito do STL. Esses contêineres e algoritmos podem ajudar você a economizar muito tempo e são fáceis de usar. Comece praticando os exemplos mostrados acima e, eventualmente, começará a usá-los em seus próprios projetos também.
No entanto, se esta é a primeira vez que está aprendendo C ++, comece aprendendo o básico antes de continuar a entender o STL.
Quer aprender C ++? Aqui estão os melhores sites e cursos online de C ++ para iniciantes e programadores experientes.
Leia a seguir
- Programação
- Tutoriais de codificação
- Programação Funcional

Nitin é um desenvolvedor de software ávido e um estudante de engenharia da computação desenvolvendo aplicativos da web usando tecnologias JavaScript. Ele trabalha como desenvolvedor web freelance e gosta de escrever para Linux e programação em seu tempo livre.
Assine a nossa newsletter
Junte-se ao nosso boletim informativo para dicas de tecnologia, análises, e-books grátis e ofertas exclusivas!
Mais um passo…!
Confirme seu endereço de e-mail no e-mail que acabamos de enviar.