{}const=>[]async()letfn</>var
Desarrollo

🧰 STL: características ocultas de la biblioteca estándar de C++

STL no es solo vector y map. Analizamos herramientas útiles pero poco utilizadas como transform, accumulate, variant, ranges.

К

Kodik

Autor

2 min de lectura

La biblioteca estándar de C++ es una herramienta poderosa que a menudo se subestima. Todo el mundo conoce vector, map y string, pero STL (Standard Template Library) no se trata solo de contenedores básicos.

Hoy, Kodik mostrará poco conocidos, pero características de STL muy útilesque mejoren tu código, lo hagan más limpio y más corto 💪

🔍 1. std::accumulate — agregación compacta

En lugar de un ciclo manual para calcular la suma de números:

int sum = 0;
for (int x : v) sum += x;

Puedes simplemente:

#include <numeric>
int sum = std::accumulate(v.begin(), v.end(), 0);
🔥 100.000+ estudiantes ya están con nosotros

¿Cansado de leer teoría?
¡Hora de programar!

Kodik — una app donde aprendes a programar con práctica. Mentor IA, lecciones interactivas, proyectos reales.

🤖 IA 24/7
🎓 Certificados
💰 Gratis
🚀 Empezar
Se unieron hoy

🌀 2. std::transform — enfoque funcional

¿Necesitas aplicar la operación a cada elemento? No escribas un ciclo, usa transform:

std::vector<int> result;
std::transform(v.begin(), v.end(), std::back_inserter(result), [](int x) {
    return x * 2;
});

🧩 3. std::any y std::variant — almacenamiento de cualquier tipo

std::variant<int, std::string> val = "Hello";
if (std::holds_alternative<std::string>(val)) {
    std::cout << std::get<std::string>(val);
}

🧱 4. std::unordered_map y std::unordered_set — el poder de las tablas hash

Cuando usas std::map y std::set normales, bajo el capó funciona árbol binario equilibrado (por lo general, rojo-negro). Esto significa que las operaciones de inserción, búsqueda y eliminación toman O(log n) tiempo.

Pero std::unordered_map y std::unordered_set están organizados de manera diferente: usan tablas hash. Debido a esto, proporcionan dificultad media de las operaciones — O(1). Esto los hace mucho más rápido en la mayoría de las tareas aplicadas, especialmente con grandes cantidades de datos.

🔥 Ejemplo:

#include <unordered_map>
#include <string>
#include <iostream>

int main() {
    std::unordered_map<std::string, int> scores;
    scores["Alice"] = 90;
    scores["Bob"] = 75;

    std::cout << scores["Alice"]; // 90
}

A diferencia de std::map, unordered_map no garantiza el orden de los elementos. Si no te importa en qué orden se almacenan los datos, utiliza unordered_-versiones para un rendimiento máximo.

🧠 ¿Cuándo usarlo?

¿Necesitas mantener el orden?

Usa

std::map, std::set

No

std::unordered_map, std::unordered_set

🧵 5. std::ranges (a partir de C++20)

#include <ranges>

auto result = v 
    | std::views::filter([](int x) { return x % 2 == 0; })
    | std::views::transform([](int x) { return x * x; });

Permite escribir cadenas de operaciones de forma bonita y compacta.

🤯 Bonus: qué más hay en STL

  • std::optional — una alternativa segura a los "valores mágicos"

  • std::span — transmisión conveniente de rangos

  • std::bitset — trabajo compacto con banderas

  • std::invoke - llamada de cualquier función, incluidas las funciones de miembro

Si quieres aprender a usar STL en tareas reales, descarga aplicación Kodik. Allí te esperan:

  • 🧠 Lecciones interactivas de C++

  • ✅ Ejercicios con comprobación de soluciones

  • 💬 Comunidad de desarrolladores

Aprende a programar no solo, sino con el apoyo y nuestro Canal de Telegram 💙

🎯Deja de postergar

¿Te gustó el artículo?
¡Hora de practicar!

En Kodik no solo lees — escribes código de inmediato. Teoría + práctica = habilidades reales.

Práctica instantánea
🧠IA explica código
🏆Certificado

Sin registro • Sin tarjeta