如何将数组中的元素向右移动?
Posted
技术标签:
【中文标题】如何将数组中的元素向右移动?【英文标题】:How to shift elements in an array to the right? 【发布时间】:2020-06-13 19:40:05 【问题描述】:我是编程新手,现在正在学习 c++。 我有一个对象数组,我想在另外两个对象之间添加一个新对象。我创建了一个函数,将元素索引处的数组向右移动,但似乎删除了其他元素,而不是只插入新元素。
void Storage::ShiftProductsRight(int index)
if(index == max_size - 1)
cout<<"No more place in storage! "<<endl;
// array[max_size-1] = Product();
return;
Product temp;
for (int i = index + 1; i < max_size-1; ++i)
temp = array[max_size-1];
array[max_size-1] = array[i];
array[i] = temp;
【问题讨论】:
C++ 有std::vector
为您处理这个问题。
你在代码的什么地方插入了一个新元素?
我想你可能正在寻找std::rotate..?
比较index
和max_size - 1
如何告诉你数组已满?即使您尝试在索引 0 处插入,数组也可能已满。
虽然我可以看到代码是错误的,但很难提供帮助,因为不清楚变量的含义。 max_size
是什么?
【参考方案1】:
如何将数组中的元素向右移动?
执行此操作的算法是:从最后一个元素开始,将其移动到新位置,向后迭代并重复直到要插入新元素的索引
标准库中有这个算法的实现。它被称为std::move_backwards
。
【讨论】:
以上是关于如何将数组中的元素向右移动?的主要内容,如果未能解决你的问题,请参考以下文章