我试图制作一个模板函数,它在所有维度中调整嵌套向量的大小。在模板中调整递归嵌套向量的大小
非常像这样:resizing multidimensional vector,但对于任意nr。暗淡的。 (我想)函数将(至少)接受对矢量(或vector<vector<T>>
或v<v<v<T>>>
等)的引用以及具有所需大小的矢量。我现在也有索引大小矢量,但它可能不需要。
到目前为止,这是我结束了(可能是完全错误的):
template<typename V> void resize(vector<V> & V1, vector<int32_t> t, int32_t index) {
int32_t current_size=t.at(index);
cout << "resize dim [" << index << "] to size " << current_size <<endl ;
++index;
if (index < t.size()) {
// for each element ??
// for(int i = 0 ; i < V1.size(); i++) { resize (V1.at(i), t, index); } // doesn't work
// for(auto const& e : V1) { resize (e, t, index); } // doesn't work
// resize(V1, t, index); // recursive call, works, but doesn't do anything
}
我想避免V1或它的任何副本的内容。我不确定是否有迭代器或循环传递引用的方式。如果没有,那么可能需要第四个输入来保持V1的索引?
顺便说一句,我正在跳过第一个昏暗的目的,它已经是正确的大小。
任何帮助表示赞赏。
什么是矢量中的“所有维度”? – Hayt
Hayt:每个嵌套向量的一个维度。所以矢量,一个昏暗,矢量>两个昏暗等。 –
Wiebe
@Wiebe你可以发布你的代码作为替代答案(我不认为这是一个很好的方式在SO上发布问题的答案) –