题目如下:
用模板表达 vector<vector<vector<.....<vector< T> > > > ..... > vecN
向量为任意正整数N层,每层长度不必一致,T为基本类型,请给出函数printArr(vecN)可以有序打出所有向量内容。
如有需要可以把int N 作为函数参数。
没有思路,还请指教,谢谢!
题目如下:
用模板表达 vector<vector<vector<.....<vector< T> > > > ..... > vecN
向量为任意正整数N层,每层长度不必一致,T为基本类型,请给出函数printArr(vecN)可以有序打出所有向量内容。
如有需要可以把int N 作为函数参数。
没有思路,还请指教,谢谢!
#include <iostream>
#include <vector>
template <typename T, int N>
class __Vec {
public:
using type = std::vector<typename __Vec<T, N - 1>::type>;
};
template <typename T>
class __Vec<T, 0> {
public:
using type = T;
};
template <typename T, int N>
using Vec = __Vec<T, N>::type;
template <typename T, int N>
void printArr(const Vec<T, N>& src) {
if constexpr (N == 1) {
for(T i: src) std::cout << i << ' ';
std::cout << std::endl;
}
else {
for (const Vec<T, N - 1> &i: src) {
printArr<T, N - 1>(i);
}
}
}
int main() {
Vec<int, 1> x{1, 2, 3};
printArr<int, 1>(x);
Vec<float, 2> y{{1.1, 2.1, 3.1}, {4.2, 5.2, 6.2}};
printArr<float, 2>(y);
return 0;
}
提供一个思路,仅供参考,可能有bug。
我也很好奇标解是什么。