#include #include #include void print( double& v ) { std::cout << v << std::endl; } template< typename V > void print( V& v ) { for( typename V::iterator i = v.begin(); i != v.end(); ++i ) { print( *i ); } std::cout << "--" << std::endl; } void init( std::vector< double>& v ) { for( std::size_t i = 0; i<4; ++i ) { v.push_back( i+1 ); } } template< typename V > void init( V& v ) { for( std::size_t i = 0; i<4; ++i ) { v.push_back( typename V::value_type() ); init( v.back() ); } } void clear( double& v ) { v=0.0; } template< typename V > void clear( V& v ) { for( typename V::iterator i = v.begin(); i != v.end(); ++i ) { clear( *i ); } } void pad( double& v ) { } template< typename V > void pad( V& v ) { v.insert( v.begin()+2, 2, v[0] ); clear( v[2] ); clear( v[3] ); for( typename V::iterator i = v.begin(); i != v.end(); ++i ) { pad( *i ); } } int main() { /* std::vector< double > m_data;*/ std::vector< std::vector< double > > m_data; // std::vector< std::vector< std::vector< double > > > m_data; init( m_data ); print( m_data ); std::cout << "----" << std::endl; pad( m_data ); print( m_data ); }