如何将std :: vector中的元素移动1?

时间:2019-04-28 12:28:08

标签: c++

我有用户定义类型的动态数组:

re.search()

然后我要删除数组的最后一个元素,将所有元素向右移动1并在索引0处插入另一个re.finditer()。现在,我得到了:

std::vector<Pipe> pipes = {Pipe(640),Pipe(480),Pipe(320),Pipe(160)};

请注意,这是一个循环,inf的初始值为5。我从Pipe类打印值-构造函数参数存储在变量中-最后,它们应该是:800、640、480、320。

它们分别是:800、480、320、160。 再经过一次迭代:960、640、320、160。

那是因为我只是在“移动”数组之前用另一个值替换管道[0]。 所以我的问题是我该怎么做?

对于抱歉的错误解释,我仍在学习。

1 个答案:

答案 0 :(得分:4)

您可以使用std::rotate将所有内容向右移动1个元素。然后为Pipe元素分配一个新的0

#include <algorithm>

// Move all elements to the right by 1
std::rotate(pipes.begin(), std::next(pipes.begin()), pipes.end());

// Create a new Pipe at the beginning
pipes[0] = Pipe(inf * 160);