泛型能不能和普通数组进行内存拷贝?

yjukh 2008-09-13 02:37:42
使用vector、deque或map存储的数据,能不能通过memcpy将其直接拷贝到普通数组中?

感觉一个个的弹出效率太低了
...全文
85 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wjb_yd 2008-09-14
  • 打赏
  • 举报
回复
不能,容器只存了元素的内存起始位置
mars_man 2008-09-14
  • 打赏
  • 举报
回复
当然不能简单得用memcpy之类的东西,只能使用这些模板类提供的方法。
你也可以把memcpy是普通数组提供的方法,只能用于简单类型。
yshuise 2008-09-13
  • 打赏
  • 举报
回复
现在据说出来个右值引用,根本不用拷贝。
yjukh 2008-09-13
  • 打赏
  • 举报
回复

好,谢谢
grellen 2008-09-13
  • 打赏
  • 举报
回复
up
lann64 2008-09-13
  • 打赏
  • 举报
回复
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
vector<int> v;
int a[100];

for(int i=0;i<50;i++)
v.push_back(i);
copy(v.begin(),v.end(),a);

for(int i=0;i<50;i++)
{
cout << a[i] <<" ";
}
cout << endl;

return 0;
}
jay的Fans 2008-09-13
  • 打赏
  • 举报
回复
#include "stdafx.h"
#include <vector>
#include <iostream>
#include <algorithm>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
vector<int> vec1;
vec1.push_back(0);
vec1.push_back(1);
vec1.push_back(2);

int a[3];
copy(vec1.begin() , vec1.end() , a);

vector<int> vec2;
copy(a , a + sizeof(a) / sizeof(int) , back_inserter(vec2));

system("pause");
return 0;
}
lann64 2008-09-13
  • 打赏
  • 举报
回复
vector<int> v;
vector<int> v2;
......

copy(v.begin(),v.end(),back_inserter(v2));
copy(v.begin(),v.end(),ostream_iterator<int>(cout," "));
.....
lann64 2008-09-13
  • 打赏
  • 举报
回复
泛型copy算法,利用迭代器。

64,648

社区成员

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

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