Última actualización:2026-10-12
Salida rápida de contenedores STL en C++¶
Modifiqué un poco el código del profesor Wu — haz clic aquí para ir directo al código
Entrada:
La salida muestra:
¶
Cómo integrarlo¶
Descarga output_container.h al proyecto e inclúyelo, y listo:
#include "output_container.h"
int main() {
std::vector<int> vec{1, 2, 3, 4, 5};
std::set<std::string> names{"light", "city"};
std::cout << vec << std::endl; // { 1, 2, 3, 4, 5 }
std::cout << names << std::endl; // { city, light }
return 0;
}
Qué contenedores soporta¶
vector, list, set, map, multiset, multimap, la familia unordered, pair, y cualquier tipo propio iterable (basta con implementar begin/end); los contenedores anidados también se imprimen directamente.
El principio en una frase¶
El núcleo es especializar operator<< para los contenedores: con SFINAE (void_t detectando begin()/end()) se decide «¿es iterable?» — si sí, salida elemento a elemento; si no, se usa el flujo de salida original. Si te interesa, lee el código fuente directamente: menos de doscientas líneas, material excelente para aprender el idiom de detección de expresiones.
Imprimir contenedores al depurar es una necesidad real; esta pequeña herramienta ahorra incontables bucles for escritos a mano. ¿Dudas? Nos vemos en los comentarios~
Temas relacionados¶
- Construir proyectos C++ con Bazel | C++那些事
- Depuración conjunta de Bazel y LLDB | C++那些事
- CMake: introducción y práctica | C++那些事
- Introducción a Conan, gestor de paquetes de C++ | C++那些事
- C++ Insights: observación en tiempo de compilación | C++那些事
- C++ Jupyter Notebook interactivo | C++那些事
- Convertir string a int en C++ | C++那些事
- dbg-macro, macro de depuración para C++ | C++那些事
- Explicación detallada de las opciones de compilación de GCC | C++那些事
- Depurar programas C++ con GDB | C++那些事