vector如何将一个后面的元素移到最前面?

yyyyxf 2006-06-27 10:03:25
rt
...全文
1364 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ahao 2006-06-28
  • 打赏
  • 举报
回复
他问的是vector,没有问vector<int>,怎么能用memmove?
OOPhaisky 2006-06-27
  • 打赏
  • 举报
回复
sharpdew(风刃)的方法效率很高,但是太“底层”了,呵呵
sankt 2006-06-27
  • 打赏
  • 举报
回复
楼上的方法很好
学习
sharpdew 2006-06-27
  • 打赏
  • 举报
回复
直接移动内存要快多了!
sharpdew 2006-06-27
  • 打赏
  • 举报
回复
何必那么复杂呢:
vector<int> vec;
for(int i=0;i<10;++i)
vec.push_back(i+1);
int last = *(vec.end()-1);
int* pos = &vec[0];
memmove(pos+1 ,pos, sizeof(int)*(vec.size()-1));
*vec.begin() = last;
bird1982 2006-06-27
  • 打赏
  • 举报
回复
把最后一个挖出来扔到第一个不就好了吗?
sankt 2006-06-27
  • 打赏
  • 举报
回复
#include<iostream>
#include<vector>

using namespace std;

int main()
{
vector<int> vec;
int i;
for(i=0;i<10;++i)
{
vec.push_back(i);
}
int temp;
temp = vec.at(9);
vec.pop_back();
vec.insert(vec.begin(),temp);
vector<int>::iterator ite;

for(ite = vec.begin();ite<vec.end();++ite)
{
cout<<*ite<<" ";
}
cout<<endl;
system("pause");
return 0;
}
sankt 2006-06-27
  • 打赏
  • 举报
回复
一种方法就是使用一个临时变量temp即可
首先保存最后一个变量的值到temp,然后前面的的元素逐一后移一个位置,最后temp变量的值赋给首位即可
triace_zhang 2006-06-27
  • 打赏
  • 举报
回复
int ia[] = {1,2,3,4};
vector<int> ivec(ia,ia + 4);

int tmp = *(ivec.end() - 1); //保存最后一个元素
ivec.pop_back(); //删除最后一个元素
ivec.insert( ivec.begin(), tmp ); //插入元素到开头

vector<int>::iterator iter = ivec.begin();
for ( ; iter != ivec.end(); iter++ )
{
cout << *iter << endl;
}
stan_uni 2006-06-27
  • 打赏
  • 举报
回复
学习一下

65,189

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧