typestar

Fundamentos del lenguaje

27 pasos en 9 series de C++.

C++ es donde el rendimiento y la abstracción se niegan a ceder: motores de juegos, navegadores, sistemas de trading y buena parte del software sobre el que se construye el resto del software. El lenguaje premia saber qué década de él estás escribiendo — y el C++ moderno es un lenguaje mucho mejor que su reputación: auto, el for de rangos, los punteros inteligentes y los algoritmos estándar reemplazaron casi todos los filos que recuerdan las historias de terror.

Este tour cubre el núcleo moderno: tipos por valor y referencias, los contenedores e iteradores sobre los que se construye todo, lambdas y la biblioteca de algoritmos, RAII y unique_ptr, clases con la regla del cero y el kit de cadenas y streams. El bis entrega programas completos. Cada fragmento compila como unidad de traducción bajo g++ -std=c++20 -Wall, y el bis corre de principio a fin.

Empieza este tour

Valores y referencias

  • Variables y autoDeclara el tipo cuando importa; deja que auto lo deduzca cuando el inicializador ya lo dice todo.
  • Referencias y constUna referencia es un segundo nombre del mismo objeto; const & es el préstamo de solo lectura de C++.
  • Cadenas básicasstd::string es dueña de sus caracteres y te da concatenación, búsqueda y rebanado como métodos.

Control de flujo

  • If y switchFiltra la entrada rara con if y deja que switch reparta el rango normal en casos.
  • El for de rangosEl bucle que recorre un contenedor completo sin índice, sin iterador y sin el clásico error de uno.
  • While y do-whilewhile pregunta antes de cada pasada; do-while corre el cuerpo una vez antes de preguntar.

Contenedores

  • Operaciones con vectorstd::vector es el contenedor por defecto: un arreglo que crece, con todo el kit incluido.
  • Búsqueda en mapstd::map mantiene las claves ordenadas y da tres entradas: el subíndice, contains y find.
  • Sets y unicidadstd::set guarda cada valor una sola vez, ordenado, y su insert informa si hizo algo.

Funciones y lambdas

  • Sobrecarga de funcionesUn nombre, tres firmas: el compilador elige el twice correcto solo por el tipo del argumento.
  • Capturas de lambdasLa lista de captura decide qué ve una lambda: copia privada con [base], acceso en vivo con [&total].
  • Argumentos por defectoLos parámetros finales tienen valores de fallback: un solo join sirve para tres formas de llamada.

Algoritmos

  • Ordenar con rangosEl std::ranges::sort de C++20 toma el contenedor completo y cualquier orden que le des.
  • transform y accumulateMap y luego reduce, al estilo de la biblioteca estándar: std::transform eleva, std::accumulate suma.
  • find y countTres preguntas sobre un vector, cada una resuelta con una llamada a un algoritmo en vez de un bucle a mano.

Clases y RAII

Cadenas y streams

  • string_viewUna ventana a los caracteres de otro: subcadenas sin copias, verificadas en tiempo de compilación.
  • Streams de cadenasArma cadenas con << y vuelve a leerlas con >>, sin ninguna conversión manual a la vista.
  • std::formatLa respuesta de C++20 a printf: plantillas verificadas por tipo, con alineación, precisión y bases.

Toques modernos

  • optional y value_orQuizás-un-valor sin números centinela: std::optional convierte la entrada mala en un no limpio.
  • Enlaces estructuradosDesempaca pares y entradas de map en variables con nombre — se acabaron .first y .second.
  • Enums con ámbitoenum class mantiene los enumeradores fuera del ámbito circundante y lejos del int implícito.

Bis

  • word_freq.cppUn reporte de frecuencia de palabras sobre un pasaje embebido, con un solo std::map contando.
  • grade_report.cppPromedios y mejores notas por estudiante, impresos como una tabla alineada con std::format.
  • temp_stats.cppMínimo, máximo y media sobre una docena de lecturas embebidas, cortesía de std::ranges.

Los otros tours de C++