typedefにテンプレートは使えないので、継承で何とかしてみる。
#include <iostream> #include <vector> using namespace std; template<typename T> class vecvec : public vector< vector<T> > {}; template <class T> void func(vecvec<T> vv) { for (vecvec<T>::const_iterator i = vv.begin() ; i != vv.end() ; i++) { for (vector<T>::const_iterator j = (*i).begin() ; j != (*i).end(); j++) { cout << *j << endl; } } } int main() { vecvec<int> vv; vector<int> v1; v1.push_back(1); v1.push_back(2); v1.push_back(3); vector<int> v2; v1.push_back(11); v1.push_back(22); v1.push_back(33); vv.push_back(v1); vv.push_back(v2); func(vv); return 0; }
なんかコンパイル時に落ちるなぁ。