社区
C++ 语言
帖子详情
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!
...全文
208
6
打赏
收藏
stl新版本指针转iterator
以前有这样的代码: vector array; vector::iterator it; it = NULL; it = &array.back(); vc6下编得过的,运行也没问题。vc2005编译报错了。我想知道c++标准对这个问题是怎么说的,random_access_iterator 可以从指针转换么?这个代码应该怎么改最好?thanks!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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的操作,算法
至于是否是指针不同编译器,不同容器都不同
珍惜生命远离CPP
2006-12-18
打赏
举报
回复
这样写可以吧。
vector<int>::iterator it = array.back();
【
转
载】
STL
迭代器
iterator
和
指针
的区别总结
指针
和
iterator
都支持与整数进行+,-运算,而且其含义都是从当前位置向前或者向后移动n个位置
指针
和
iterator
都支持减法运算,
指针
-
指针
得到的是两个
指针
之间的距离,迭代器-迭代器得到的是两个迭代器之间的距离 通过
指针
或者
iterator
都能够修改其指向的元素 通过上面这几点看,两者真的很像,但是两者也有着下面的几个不同地方 cout操作符可以直...
C++
STL
:迭代器特性
iterator
_traits
STL
的算法需要知道
iterator
的相关信息(
iterator
种类、
iterator
指向的元素的类型...),来决定使用最优化的算法。然而,原生
指针
本身并不是一个类类型,它们没有定义,但是标准库中泛型算法和容器希望迭代器都有上面提到的5种特性,但是对于原生
指针
,并没有任何结构定义。支持前面四种
Iterator
的所有操作,并另外支持it + n、it - n、it += n、 it -= n、it1 - it2和it[n]等操作。不同类型的迭代器支持的操作不同,在算法优化的时候需要用到。
STL
下的
iterator
traits
文章目录前言迭代器相应型别(associated types)模板特化value_typedifference_typereferencepointer
iterator
_categoryadvanced()为例为什么代表迭代器类型的class使用继承std::
iterator
的保证完整代码重列 前言 迭代器就是所谓泛型
指针
,《Design Patterns》一书中将迭代器定义为:提供一种方法,使之能依序遍历某个聚合物(容器)所含的各个元素,而又无需暴露该聚合物的内部表述方式。面向对象设计推崇将算法封装.
C++
STL
Iterator
和traits
STL
Iterator
和traits
STL
Iterator
1.
Iterator
定义
STL
的中心思想在于将数据容器和算法分开,彼此独立设计,然后再用一个粘合剂将其黏再一起,这个粘合剂就是
iterator
。 迭代器是一种智能
指针
,它针对
指针
中最常见的内容提领(dereference)和成员访问(member access),这里隐含的一个重要的消息就是迭代器必须包含原生
指针
,即接待器是原生
指针
的一种拓展。所以迭代器最重要的就是重载operator*和operator->。 2.实现.
C++
STL
为什么要有const_
iterator
const_
iterator
的一系列问题。
C++ 语言
65,210
社区成员
250,515
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章