次の基本ベクトルを仮定します。
std::vector<int> numbers;
numbers.push_back(0);
numbers.push_back(1);
numbers.push_back(2);
numbers.push_back(3);
0 と 1 の間に 6 つの新しい数字を挿入する効率的な方法は何ですか?
これが現在の私のアプローチですが、あまり効率的ではないように感じます。
for (int new_number=0;new_number<6;new_number++) {
numbers.emplace(numbers.begin()+1+new_number,new_number);
}
このアプローチが気に入らない理由は、1 ~ 3 の数字を 6 回移動する必要があるためです。これらの数字を 6 回ではなく 1 回だけ移動する方法はありますか? 次に、このループを使用できます。
for (int new_number=0;new_number<6;new_number++) {
numbers[new_number+1]=new_number;
}
これが私が達成しようとしていることです:
シフト前のベクトル:
0 1 2 3
シフト後のベクトル:
0 X X X X X X 1 2 3