假设有以下基本 vector :
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;
}
这是我想要完成的:
移动前的 vector :
0 1 2 3
移位后的 vector :
0 X X X X X X 1 2 3
最佳答案
insert
过载允许您插入 n
个相同项目的函数:
// Add six copies of -1 to the vector starting at position 1
numbers.insert(numbers.begin()+1, 6, -1);
您可以使用另一个带有三个迭代器的重载 - 插入位置的迭代器,以及从中获取数据的开始/结束迭代器对:
// Insert addedNUmbers at position 1
numbers.insert(numbers.begin()+1, addedNUmbers.begin(), addedNUmbers.end());
关于c++ - 在 C++ 中移动 vector 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19146582/