【发布时间】:2023-01-23 21:14:10
【问题描述】:
我正在学习模板编程。在这样做的同时,我正在尝试实现一个模板函数来读取 n 维向量。
我的思维过程是递归地读取所有维度,一旦我到达最里面的向量,就开始读取它的元素。 以下是我尝试过的(不正确的)代码。
template<typename Container>
void read_vectors(Container c){
read_vectors<decltype(begin(c))>(begin(c));
}
template<>
void read_vectors(vector<int> container){
for(auto i:container)
cout<<i<<endl;
}
int main(){
vector<vector<vector<int>>> intvectors{{{1,2,3},{1,2,3}},{{1,2,3}, {1,2,3}}};
read_vectors(intvectors);
return 0;
}
关于如何实现这一目标的任何指示都是有帮助的。
【问题讨论】:
-
begin(c)是迭代器,而不是向量元素。 -
那不是读书,是写作。
-
发布的代码有什么问题?我的意思是除了缺少包括?为什么要从代码中删除包含?任何对看到编译器错误感兴趣的人都必须将它们添加回去