社区
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!
...全文
188
6
打赏
收藏
stl新版本指针转iterator
以前有这样的代码: vector array; vector::iterator it; it = NULL; it = &array.back(); vc6下编得过的,运行也没问题。vc2005编译报错了。我想知道c++标准对这个问题是怎么说的,random_access_iterator 可以从指针转换么?这个代码应该怎么改最好?thanks!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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();
visual stdio 2018
新版本
c++
stl
源码 word文档
最近在学习c++源码,SGI 老的源码看得差不多了,并且没有找到新的SGI
stl
,无奈之下找到了visual的源码,其中我将源码复制下来了,注释和宏都已经替换,适合有兴趣研究
stl
的同志阅读,剖析。
STL
Programmer Guide
Standard Template Library Programmer's Guide——很好的
STL
学习帮助,chm格式,目前已很难找到
标准模板库
STL
一份讲解全面的标准模板库
STL
学习资料 标准模板库
STL
主要由6大组件组成: (1)容器(Containers)。包括各种基本数据结构的类模板。
STL
容器部分主要由头文件
、
、
、
、< map>、
和
组成。 (2)算法(Algorithms)。包括各种基本算法,如比较、交换、查找、排序、遍历操作、复制、修改、移除、反
转
、合并等等。
STL
算法部分主要由头文件
和
组成。 (3)迭代器(
Iterator
s)。迭代器是面向对象版本的
指针
,如同
指针
可以指向内存中的一个地址,迭代器可以指向容器中的一个位置。
STL
的每一个容器类模板中,都定义了一组对应的迭代器类,用以存取容器中的元素。这样,在
STL
中迭代器就将算法和容器联系起来了,通过迭代器,算法函数可以访问容器中指定位置的元素,而无需关心元素的具体类型。
STL
迭代器部分主要由头文件
和<
iterator
>组成。 (4)函数对象(Function Objects)。一种行为类似于函数的class,实现技术上是一个改写了“call operator()”的class。
STL
提供 15 个预定义的 Function objects。头文件
中定义了一些类模板,用以声明函数对象。 (5)适配器(Adaptors)。简单地说就是一种接口类,专门用来修改现有类的接口,提供一种新的接口;或调用现有的函数来实现所需要的功能。 主要包括3种适配器Container Adaptors、
Iterator
Adaptors与Function Adaptors。其中迭代器适配器的定义在头文件<
iterator
>中,函数适配器的定义在头文件
中。 (6)内存配置器(Allocators)。为
STL
提供空间配置的系统。 头文件
中的主要部分是模板类allocator,它负责产生所有容器中的默认分配器。容器使用allocator完成对内存的操作,allocator提供内存原语以对内存进行统一的存取。
一篇文章搞懂
STL
中的迭代器
Iterator
Table of Contents 0.概述 迭代器是一种智能
指针
迭代器是一种连接容器和算法的桥梁 1.迭代器的分类 Input(输入)迭代器 Output(输出)迭代器 Forward(前向)迭代器 Bidirectional(双向)迭代器 Random Access(随机存取)迭代器 迭代器相关算法函数 各个容器支持的迭代器 2.迭代器的失效 ...
STL
下的
iterator
traits
文章目录前言迭代器相应型别(associated types)模板特化value_typedifference_typereferencepointer
iterator
_categoryadvanced()为例为什么代表迭代器类型的class使用继承std::
iterator
的保证完整代码重列 前言 迭代器就是所谓泛型
指针
,《Design Patterns》一书中将迭代器定义为:提供一种方法,使之能依序遍历某个聚合物(容器)所含的各个元素,而又无需暴露该聚合物的内部表述方式。面向对象设计推崇将算法封装.
C++ 语言
65,186
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章