-1
ベクトルを参照で取り込む関数を作成しようとしていますが、ベクトルのエントリ2を見ると、そのエントリを削除して5の4つのコピーに置き換えようとします。vector.insertはベクトルのサイズを変更しませんか?
ベクトルが222(それはサイズn = 3)、私は新しいベクトルとして555555555555を望む
しかし、インデックスが< nである場合、最初のいくつかの場合にのみ正しく動作します。
今のところ、ベクトルaを555522に変更する ベクトルのサイズを変更する方法はありますか?
void replace2 (vector <int>* a, int n){
for (int i = 0; i < n; ++i){
if ((*a)[i] == 2){
(*a).erase((*a).begin() + i);
for(int j = 0; j < 4; ++j){
(*a).insert((*a).begin() + i, 5);
}
}
}
}
[トピックを削除]ポインタの代わりにベクトルへの参照を使用してください。 – Charles
ループの最初の反復後、 '(* a)[i]'はもはや2に等しくなりません。残りの反復は何も行いません。 –
@Charles私が関数を呼び出すとき、私はreplace2(&a、3)を実行します – shoestringfries