假設下面的基本向量的值:移在C++中的矢量
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次?然後,我可以用這個循環:
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
我認爲,我們確實需要知道更多有關該問題的幫助,插入到矢量的中間永遠不會好,儘量避免它 – aaronman
@aaronman我需要一個向量,因爲數據必須對齊我正在使用的API – Grapes
如果您無法像dasblightenlink的答案中那樣插入連續的範圍,則可以使用後端插入後跟「std :: rotate」。 –