gpt4 book ai didi

c++ - 在 C++ 中移动 vector 的值

转载 作者:太空宇宙 更新时间:2023-11-03 10:30:08 26 4
gpt4 key购买 nike

假设有以下基本 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com