#include <vector>
#include <iterator>
#include <iostream>
template < template<typename...> class Container, typename... Ts>
std::ostream& operator<<(std::ostream& oss, const Container<Ts...>& c) {
oss << "[";
if (!c.empty()) { // use std::empty() in C++17 and later
auto last = std::prev(std::cend(c));
/*
using value_type = typename Container<Ts...>::value_type;
std::copy(std::cbegin(c), last, std::ostream_iterator<value_type>(oss, ","));
*/
for(auto iter = std::cbegin(c); iter != last; ++iter)
oss << *iter << ",";
oss << *last;
}
return oss << "]";
}
int main() {
std::vector<std::vector<unsigned>> data(5);
std::cout << data << std::endl;
return 0;
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGl0ZXJhdG9yPgojaW5jbHVkZSA8aW9zdHJlYW0+Cgp0ZW1wbGF0ZSA8IHRlbXBsYXRlPHR5cGVuYW1lLi4uPiBjbGFzcyBDb250YWluZXIsIHR5cGVuYW1lLi4uIFRzPgpzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvc3MsIGNvbnN0IENvbnRhaW5lcjxUcy4uLj4mIGMpIHsKCW9zcyA8PCAiWyI7CglpZiAoIWMuZW1wdHkoKSkgeyAvLyB1c2Ugc3RkOjplbXB0eSgpIGluIEMrKzE3IGFuZCBsYXRlcgoJCWF1dG8gbGFzdCA9IHN0ZDo6cHJldihzdGQ6OmNlbmQoYykpOwogICAgICAgIC8qCiAgICAgICAgdXNpbmcgdmFsdWVfdHlwZSA9IHR5cGVuYW1lIENvbnRhaW5lcjxUcy4uLj46OnZhbHVlX3R5cGU7CiAgICAgICAgc3RkOjpjb3B5KHN0ZDo6Y2JlZ2luKGMpLCBsYXN0LCBzdGQ6Om9zdHJlYW1faXRlcmF0b3I8dmFsdWVfdHlwZT4ob3NzLCAiLCIpKTsKICAgICAgICAqLwogICAgICAgIGZvcihhdXRvIGl0ZXIgPSBzdGQ6OmNiZWdpbihjKTsgaXRlciAhPSBsYXN0OyArK2l0ZXIpIAogICAgICAgICAgICBvc3MgPDwgKml0ZXIgPDwgIiwiOwoJCW9zcyA8PCAqbGFzdDsKCX0KCXJldHVybiBvc3MgPDwgIl0iOwp9CgppbnQgbWFpbigpIHsKCXN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPHVuc2lnbmVkPj4gZGF0YSg1KTsKCXN0ZDo6Y291dCA8PCBkYXRhIDw8IHN0ZDo6ZW5kbDsKCXJldHVybiAwOwp9