Última atualização:2026-10-12
Saída rápida de contêineres STL em C++¶
Fiz algumas modificações no código do professor Wu — clique aqui para ir direto ao código
Entrada:
O resultado exibido é:
¶
Como integrar¶
Basta baixar o output_container.h para o projeto e incluí-lo:
#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;
}
Quais contêineres são suportados¶
vector, list, set, map, multiset, multimap, a família unordered, pair, além de qualquer tipo próprio iterável (basta implementar begin/end); contêineres aninhados também imprimem direto.
O princípio em uma frase¶
O núcleo é especializar operator<< para os contêineres: usa SFINAE (void_t detectando begin()/end()) para decidir «é iterável?» — se sim, saída elemento a elemento; se não, segue o fluxo de saída original. Quem tiver interesse, leia o código-fonte direto: menos de duzentas linhas, ótimo material para aprender o idiom de detecção de expressões.
Imprimir contêineres ao depurar é necessidade básica; essa ferramentinha poupa incontáveis loops for escritos à mão. Dúvidas? Deixe nos comentários~
Tópicos relacionados¶
- Construindo projetos C++ com Bazel | C++那些事
- Depuração conjunta de Bazel e LLDB | C++那些事
- CMake: introdução e prática | C++那些事
- Introdução ao gerenciamento de pacotes C++ com Conan | C++那些事
- C++ Insights: observação em tempo de compilação | C++那些事
- C++ interativo com Jupyter Notebook | C++那些事
- Converter string para int em C++ | C++那些事
- Macro de depuração dbg-macro em C++ | C++那些事
- Opções de compilação do GCC em detalhes | C++那些事
- Depuração de programas C++ com GDB | C++那些事