stl中vector的操作问题,请大家帮忙解答

xwffwx 2011-04-22 05:15:28
有vector<int> arry;

1、我有一个函数A,处理int数组,参数是int*
我能不能这样调用
A(&(arry.begin()));
如果不能,该怎么写?

2、我想删除arry中的第n个元素
能不能这样写
arry.erase(array.begin()+n);
如果不能,该怎么写?

我在书里没找着答案,谢谢大家帮忙解答一下了
...全文
102 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq120848369 2011-04-22
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wangjunsheng 的回复:]

引用 6 楼 qq120848369 的回复:
arr.begin()本来就是int*的指针,vector的迭代器就是指针。


一般而言是这样的,但这个是stl 的实现, 你没办法假定它一定是这样
它可以不是int*

&a[0] 最稳妥,vector<int> 的话一定是 int* 且根据stl vector 的特性,一定是指向第一个的
[/Quote]

额,我不管他到底是什么。。。vector::erase(vector::interator iter),传入迭代器就得了。
乃不知有汉 2011-04-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 qq120848369 的回复:]
arr.begin()本来就是int*的指针,vector的迭代器就是指针。
[/Quote]

一般而言是这样的,但这个是stl 的实现, 你没办法假定它一定是这样
它可以不是int*

&a[0] 最稳妥,vector<int> 的话一定是 int* 且根据stl vector 的特性,一定是指向第一个的
qq120848369 2011-04-22
  • 打赏
  • 举报
回复
arr.begin()本来就是int*的指针,vector的迭代器就是指针。
blackstar8888 2011-04-22
  • 打赏
  • 举报
回复
1.A(&(*array.begin()));//array.begin()返回vector::iterator
2.可以
乃不知有汉 2011-04-22
  • 打赏
  • 举报
回复
A ( &array[0], array.size() );

A 要加个参数 n 以判断 array 的size
bargio_susie 2011-04-22
  • 打赏
  • 举报
回复
1. A(arry.begin());
2. 可以
乃不知有汉 2011-04-22
  • 打赏
  • 举报
回复
1.

if (!array.empty())
A ( &array[0] );

2.

if ( array.size() > n )
arry.erase(array.begin()+n);
c_losed 2011-04-22
  • 打赏
  • 举报
回复
1.A(&arry)

2.arry.erase(n-1);

stl只看过一点
不熟

65,187

社区成员

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

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