#include <string>
#include <vector>
#include <iostream>
int main()
{
{
// make a 3D vector of rank 3 x 4 x 5
std::vector< std::string > vec(5) ; // vector of five strings
std::vector< std::vector< std::string > > vec_2d( 4, vec ) ; // 4 x 5
std::vector< std::vector< std::vector< std::string > > > vec_3d( 3, vec_2d ) ; // 3 x 4 x 5
// print sizes
std::cout << "vec 3d size:" << vec_3d.size() << '\n' ;
for( const auto& v2 : vec_3d )
{
std::cout << " vec 2d size:" << v2.size() << " [ " ;
for( const auto& v : v2 ) std::cout << "vec size:" << v.size() << " " ;
std::cout << "]\n" ;
}
}
{
// make a 3D vector of rank 5 X 4 X 3
std::vector< std::vector< std::vector< std::string > > > vec_3d(5) ; // 5 x 0 x 0
for( auto& v2 : vec_3d )
{
v2.resize(4) ; // 5 x 4 x 0
for( auto& v : v2 ) v.resize(3) ; // 5 x 4 x 3
}
// print sizes
std::cout << "\n\nvec 3d size:" << vec_3d.size() << '\n' ;
for( const auto& v2 : vec_3d )
{
std::cout << " vec 2d size:" << v2.size() << " [ " ;
for( const auto& v : v2 ) std::cout << "vec size:" << v.size() << " " ;
std::cout << "]\n" ;
}
}
}
I2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKaW50IG1haW4oKQp7CiAgICB7CiAgICAgICAgLy8gbWFrZSBhIDNEIHZlY3RvciBvZiByYW5rIDMgeCA0IHggNQogICAgICAgIHN0ZDo6dmVjdG9yPCBzdGQ6OnN0cmluZyA+IHZlYyg1KSA7IC8vIHZlY3RvciBvZiBmaXZlIHN0cmluZ3MKICAgICAgICBzdGQ6OnZlY3Rvcjwgc3RkOjp2ZWN0b3I8IHN0ZDo6c3RyaW5nID4gPiB2ZWNfMmQoIDQsIHZlYyApIDsgLy8gNCB4IDUKICAgICAgICBzdGQ6OnZlY3Rvcjwgc3RkOjp2ZWN0b3I8IHN0ZDo6dmVjdG9yPCBzdGQ6OnN0cmluZyA+ID4gPiB2ZWNfM2QoIDMsIHZlY18yZCApIDsgLy8gMyB4IDQgeCA1CgogICAgICAgIC8vIHByaW50IHNpemVzCiAgICAgICAgc3RkOjpjb3V0IDw8ICJ2ZWMgM2Qgc2l6ZToiIDw8IHZlY18zZC5zaXplKCkgPDwgJ1xuJyA7CiAgICAgICAgZm9yKCBjb25zdCBhdXRvJiB2MiA6IHZlY18zZCApCiAgICAgICAgewogICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIiAgICB2ZWMgMmQgc2l6ZToiIDw8IHYyLnNpemUoKSA8PCAiICBbICIgOwogICAgICAgICAgICBmb3IoIGNvbnN0IGF1dG8mIHYgOiB2MiApIHN0ZDo6Y291dCA8PCAidmVjIHNpemU6IiA8PCB2LnNpemUoKSA8PCAiICAiIDsKICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJdXG4iIDsKICAgICAgICB9CiAgICB9CgogICAgewogICAgICAgIC8vIG1ha2UgYSAzRCB2ZWN0b3Igb2YgcmFuayA1IFggNCBYIDMKICAgICAgICBzdGQ6OnZlY3Rvcjwgc3RkOjp2ZWN0b3I8IHN0ZDo6dmVjdG9yPCBzdGQ6OnN0cmluZyA+ID4gPiB2ZWNfM2QoNSkgOyAvLyA1IHggMCB4IDAKICAgICAgICBmb3IoIGF1dG8mIHYyIDogdmVjXzNkICkKICAgICAgICB7CiAgICAgICAgICAgIHYyLnJlc2l6ZSg0KSA7IC8vIDUgeCA0IHggMAogICAgICAgICAgICBmb3IoIGF1dG8mIHYgOiB2MiApIHYucmVzaXplKDMpIDsgLy8gNSB4IDQgeCAzCiAgICAgICAgfQoKCiAgICAgICAgLy8gcHJpbnQgc2l6ZXMKICAgICAgICBzdGQ6OmNvdXQgPDwgIlxuXG52ZWMgM2Qgc2l6ZToiIDw8IHZlY18zZC5zaXplKCkgPDwgJ1xuJyA7CiAgICAgICAgZm9yKCBjb25zdCBhdXRvJiB2MiA6IHZlY18zZCApCiAgICAgICAgewogICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIiAgICB2ZWMgMmQgc2l6ZToiIDw8IHYyLnNpemUoKSA8PCAiICBbICIgOwogICAgICAgICAgICBmb3IoIGNvbnN0IGF1dG8mIHYgOiB2MiApIHN0ZDo6Y291dCA8PCAidmVjIHNpemU6IiA8PCB2LnNpemUoKSA8PCAiICAiIDsKICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJdXG4iIDsKICAgICAgICB9CiAgICB9Cgp9Cg==