stl新版本指针转iterator

Xcoder 2006-12-18 05:42:51
以前有这样的代码:
vector<int> array;
vector<int>::iterator it;

it = NULL;
it = &array.back();

vc6下编得过的,运行也没问题。vc2005编译报错了。我想知道c++标准对这个问题是怎么说的,random_access_iterator 可以从指针转换么?这个代码应该怎么改最好?thanks!

...全文
199 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
roydux 2006-12-18
  • 打赏
  • 举报
回复
vector<int> array;
vector<int>::iterator it = array.end() - 1 ;
a_b_c_abc8 2006-12-18
  • 打赏
  • 举报
回复
array.back();//这个是返回最后一个元素

vector<int>::iterator it = --(array.end());//要返回最后一个元素的迭代器可这样写
jixingzhong 2006-12-18
  • 打赏
  • 举报
回复
vector<int>::iterator it = array.back();

迭代器 的作用和指针类似,
但是在 概念上,
它们可是有很大的区别的 ...

就理解成一个 容器的索引就好了 ~~
healer_kx 2006-12-18
  • 打赏
  • 举报
回复
迭代器并不是指针,所以别写出这样的代码就行了

it = NULL;

对于vecotr的实现来说,
VC6的STL好像是用原始指针实现的,所以这样"写"可以"编译"。
但是对于某些版本的STL的迭代器使用结构体聚合指针来实现的。所以这样的代码就不能编译了。
但是不管怎么实现,这么用iterator都是不对的。
guochun 2006-12-18
  • 打赏
  • 举报
回复
c++中的iterator不一定是指针,最好不要直接赋值地址
c++标准中只规定iterator的操作,算法
至于是否是指针不同编译器,不同容器都不同
  • 打赏
  • 举报
回复
这样写可以吧。
vector<int>::iterator it = array.back();

65,209

社区成员

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

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