Standard Template Library (STL)

A Standard Template Library (STL) é um componente essencial da biblioteca padrão do C++, fornecendo ferramentas genéricas e eficientes para manipulação de dados, algoritmos e estruturas de dados. Projetada para ser flexível e reutilizável, a STL utiliza templates para permitir operações em diferentes tipos de dados sem perda de desempenho. Este artigo apresenta uma visão geral da STL, sua história e uma lista de suas principais funções, agrupadas por cabeçalho, com links para páginas detalhadas de cada função.

O que é a STL?

A STL é uma biblioteca que faz parte do padrão C++ desde 1998 (C++98), oferecendo:

  • Contêineres: Estruturas de dados como vector, list, map, set, etc.
  • Algoritmos: Funções genéricas para busca, ordenação, manipulação de intervalos, etc., como sort, find e accumulate.
  • Iteradores: Objetos que permitem navegar pelos elementos dos contêineres.
  • Funções utilitárias: Ferramentas como make_pair, move e ponteiros inteligentes (unique_ptr, shared_ptr).

A STL é projetada para ser eficiente, genérica e extensível, permitindo que programadores combinem seus componentes de maneira modular para resolver uma ampla gama de problemas.

Breve História da STL

A STL foi originalmente desenvolvida por Alexander Stepanov, Meng Lee e David Musser na Hewlett-Packard (HP) no início dos anos 1990. Inspirada por conceitos de programação genérica e paradigmas funcionais, a STL foi proposta para padronizar algoritmos e estruturas de dados reutilizáveis em C++. Em 1994, a STL foi incorporada à proposta do padrão C++98, tornando-se parte oficial da linguagem. Desde então, a STL evoluiu com novas funcionalidades em C++11, C++17, C++20 e além, incluindo melhorias como std::string_view, std::span e algoritmos paralelos.

A STL revolucionou a programação em C++ ao introduzir um modelo genérico que combina eficiência com flexibilidade, influenciando outras linguagens e bibliotecas modernas.

Funções da STL por Cabeçalho

Abaixo está uma lista das principais funções da STL, organizadas por cabeçalho. Cada função tem um link para uma página futura com detalhes específicos (a ser criada). As funções estão agrupadas por cabeçalho, pois este é o modo natural como a STL organiza seus componentes, facilitando a navegação e a consulta.

<algorithm>

Este cabeçalho contém algoritmos genéricos para manipulação de intervalos, incluindo ordenação, busca e modificação.

<numeric>

Este cabeçalho fornece algoritmos numéricos para cálculos em intervalos.

<vector>

Contém funções para manipulação de vetores dinâmicos.

<list>

Contém funções para manipulação de listas duplamente encadeadas.

<map>

Contém funções para manipulação de mapas associativos ordenados.

<unordered_map>

Contém funções para manipulação de mapas associativos não ordenados.

<deque>

Contém funções para manipulação de deques (filas de duas extremidades).

<set>

Contém funções para manipulação de conjuntos ordenados.

<utility>

Contém funções utilitárias para manipulação de pares e movimentação.

  • std::make_pair - Cria um std::pair a partir de dois valores.
  • std::move - Converte um objeto em uma referência rvalue.
  • std::swap - Troca os valores de dois objetos.
  • std::tie - Cria uma tupla de referências para desempacotar valores.

<memory>

Contém funções para gerenciamento de memória dinâmica.

<string>

Contém funções para manipulação de strings.

Próximos Passos

Cada função listada acima terá sua própria página detalhada, incluindo parâmetros, retornos, exceções, exemplos e desempenho. Consulte as páginas individuais para aprofundar seu conhecimento sobre cada função da STL.

Para contribuir com esta wiki ou sugerir melhorias, envie um comentário ou pull request no repositório do projeto em dionisio.dev!