我想将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来移动元素。但是我怎么能在上面的编译器版本中做到这一点?
答案 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());