Tutorial C ++ STL

Espero que você já tenha entendido o conceito de modelo C ++ que discutimos anteriormente. O C ++ STL (Standard Template Library) é um poderoso conjunto de classes de template C ++ para fornecer classes e funções de uso geral com modelos que implementam muitos algoritmos e estruturas de dados populares e comumente usados, como vetores, listas, filas e pilhas.

No núcleo da Biblioteca de modelos padrão C ++ estão os seguintes três componentes bem estruturados -

Sr. Não Descrição do componente
1

Containers

Os contêineres são usados ​​para gerenciar coleções de objetos de um determinado tipo. Existem vários tipos diferentes de recipientes como deque, lista, vetor, mapa, etc.

2

Algorithms

Algoritmos atuam em contêineres. Eles fornecem os meios pelos quais você executará a inicialização, classificação, pesquisa e transformação do conteúdo dos contêineres.

3

Iterators

Os iteradores são usados ​​para percorrer os elementos de coleções de objetos. Essas coleções podem ser contêineres ou subconjuntos de contêineres.

Discutiremos sobre todos os três componentes C ++ STL no próximo capítulo enquanto discutimos a Biblioteca Padrão C ++. Por enquanto, tenha em mente que todos os três componentes têm um rico conjunto de funções predefinidas que nos ajudam a realizar tarefas complicadas de maneira muito fácil.

Tomemos o seguinte programa que demonstra o contêiner de vetor (um modelo padrão C ++) que é semelhante a um array, com a exceção de que trata automaticamente de seus próprios requisitos de armazenamento no caso de crescer -

#include <iostream>
#include <vector>
using namespace std;
 
int main() {

   // create a vector to store int
   vector<int> vec; 
   int i;

   // display the original size of vec
   cout << "vector size = " << vec.size() << endl;

   // push 5 values into the vector
   for(i = 0; i < 5; i++) {
      vec.push_back(i);
   }

   // display extended size of vec
   cout << "extended vector size = " << vec.size() << endl;

   // access 5 values from the vector
   for(i = 0; i < 5; i++) {
      cout << "value of vec [" << i << "] = " << vec[i] << endl;
   }

   // use iterator to access the values
   vector<int>::iterator v = vec.begin();
   while( v != vec.end()) {
      cout << "value of v = " << *v << endl;
      v++;
   }

   return 0;
}

Quando o código acima é compilado e executado, ele produz o seguinte resultado -

vector size = 0
extended vector size = 5
value of vec [0] = 0
value of vec [1] = 1
value of vec [2] = 2
value of vec [3] = 3
value of vec [4] = 4
value of v = 0
value of v = 1
value of v = 2
value of v = 3
value of v = 4

Aqui estão os seguintes pontos a serem observados relacionados a várias funções que usamos no exemplo acima -

  • A função de membro push_back () insere valor no final do vetor, expandindo seu tamanho conforme necessário.

  • A função size () exibe o tamanho do vetor.

  • A função begin () retorna um iterador para o início do vetor.

  • A função end () retorna um iterador para o final do vetor.