将Vector的第一个元素移动到最后一个元素

时间:2014-10-13 17:59:23

标签: c++ gcc move

我想将vector的第一个元素移动到vector的末尾。

v = {1,2,3,4} 在此之后应该是这样的

v = {2,3,4,1}

我的编译器版本是gcc版本4.4.3(Ubuntu 4.4.3-4ubuntu5.1)

我知道在Vc11中我们可以使用std :: move来移动元素。但是我怎么能在上面的编译器版本中做到这一点?

3 个答案:

答案 0 :(得分:1)

正如评论中所述,std::rotate是一种可能的方式:

std::rotate( v.begin(), v.begin() + 1, v.end() );

答案 1 :(得分:1)

您应该考虑使用std :: rotate或者如果您想要它的丑陋方式: 创建一个函数,保护局部变量中的最后一个元素和第一个元素,创建一个新的局部向量,但最后一个元素作为向量中的第一个元素。在向量中放置开始+ 1到结束-1,然后放入第一个元素。

答案 2 :(得分:1)

标准库中有std::rotate algorithm

std::rotate(ObjectToRotate.begin(),
            ObjectToRotate.end()-1, // this will be the new first element
            ObjectToRotate.end());