入れ子のベクトルをすべての次元でサイズ変更するテンプレート関数を作成しようとしています。テンプレート内の再帰的な入れ子ベクトルのサイズを変更する
かなりこのように: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のインデックスを維持するために第4の入力が必要でしょうか?
Btw。、私は目的の最初の薄暗度をスキップしています、それはすでに正しいサイズです。
助けてください。
ベクトルの "すべてのディメンション"とは何ですか? – Hayt
Hayt:入れ子になったベクトルごとに1次元。したがって、ベクター、1つの薄暗く、ベクター> 2つの薄暗い等。 –
Wiebe
@ウィーベーあなたは別の答えとしてコードを投稿することができます(私はSOの質問の中に回答を投稿するのは良い方法だとは思わない) –