如何访问vector等容器的数据内存

TheNewIpad 2012-10-22 11:25:18
vector<int> 类型的变量,里面存储了N个 int类型的变量,现在需要 把这些数据整成C指针形式的数组,传递给其他函数。 想知道有什么方法木有。
...全文
255 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Saleayas 2012-10-22
  • 打赏
  • 举报
回复
std::vector< T > vt;

&vt[0]

// 由于不存在大小为 0 的数组。所以必须保证 vt 不为空。
// 同时必须注意 生存期。
翅膀又硬了 2012-10-22
  • 打赏
  • 举报
回复
注意变量生存时间[Quote=引用 7 楼 的回复:]

To 4楼,5楼, 我其实就像要这种方便的快捷代码。 我试试去
[/Quote]
rocktyt 2012-10-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

vector和数组的区别就是封装,数组可以访问其内存,耍vector不能访问其内存
[/Quote]怎么个不能访问内存法?你上面自己不是也写了访问方法
vector的意义在于不定长
TheNewIpad 2012-10-22
  • 打赏
  • 举报
回复
To 4楼,5楼, 我其实就像要这种方便的快捷代码。 我试试去
xyddz 2012-10-22
  • 打赏
  • 举报
回复
vector和数组的区别就是封装,数组可以访问其内存,耍vector不能访问其内存
xyddz 2012-10-22
  • 打赏
  • 举报
回复
vector可以和C很好的兼容,如果函数接收一个数组,你可以这样传&youVec[0]
rocktyt 2012-10-22
  • 打赏
  • 举报
回复
直接传vector首元素的地址啊
vector<int> a;的话,&a[0]就可以了
TheNewIpad 2012-10-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

C/C++ code

int* iary = (int*)malloc(vector.size() * sizeof(int));
int* p = iary;
for(vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); ++iter)
{
*p++ = *iter;
}
[/Quote]

记得老邓还是谁曾经给过一段代码, 代码就是直接用vector的内存来着。
nickwu1220 2012-10-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
C/C++ code


int* iary = (int*)malloc(vector.size() * sizeof(int));
int* p = iary;
for(vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); ++iter)
{
*p++ = *iter;
}
[/Quote]
++++
传给函数 iary这个指针就行了
图灵狗 2012-10-22
  • 打赏
  • 举报
回复

int* iary = (int*)malloc(vector.size() * sizeof(int));
int* p = iary;
for(vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); ++iter)
{
*p++ = *iter;
}

64,637

社区成员

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

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