Se eu tiver um intervalo, posso imprimi-lo com a biblioteca fmt, desta forma: https://fmt.dev/8.1.0/api.html#ranges-api
#include <fmt/ranges.h>
std::vector<int> t = {1, 2, 3};
// Prints "[1, 2, 3]"
fmt::print("{}", t);
E se eu quiser controlar o separador:
// Prints "1| 2| 3"
fmt::print("{}", fmt::join(t, "| "));
O que acontece se eu tiver contêineres aninhados, por exemplo std::vector<std::vector<int>>
, como posso controlar o separador aninhado?
std::vector<std::vector<int>> v = ...
fmt::print("{}", fmt::join(t, "| "));
isso será impresso [1, 2, 3]| [4, 5, 6]| [7, 8, 9]
.
Observe que só posso controlar o formato de nível superior.
Para contextualizar, estou tentando controlar a formatação de matrizes multidimensionais: https://godbolt.org/z/M9cTEox7c
Você pode usar intervalos para isso: