社区
C++ 语言
帖子详情
迭代器的算术操作问题
wushuai1346
2009-02-22 01:50:56
昨天在书上看到的代码,说是可以直接定位于vector的中间变量:
vector<int>::iterator mid = vi.begin() + vi.size()/2;
但是我不知道这段代码是如何实现这个功能的,希望有大侠可以帮我具体解释一下,
另外,这段代码和:
vector<int>::iterator mid = (vi.begin() + vi.size())/2;
的区别是什么呢?谢谢先.
...全文
151
10
打赏
收藏
迭代器的算术操作问题
昨天在书上看到的代码,说是可以直接定位于vector的中间变量: vector::iterator mid = vi.begin() + vi.size()/2; 但是我不知道这段代码是如何实现这个功能的,希望有大侠可以帮我具体解释一下, 另外,这段代码和: vector::iterator mid = (vi.begin() + vi.size())/2; 的区别是什么呢?谢谢先.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wushuai1346
2009-02-22
打赏
举报
回复
明白,谢大家了.
猫已经找不回了
2009-02-22
打赏
举报
回复
迭代器mid 基本可以认为类似指针.
vector <int>::iterator mid = vi.begin() + vi.size()/2;
就是从vi的起始+半个vi的size,那肯定是指向vi的中间位置啊.
这么明显的代码还需要解释?
pengzhixi
2009-02-22
打赏
举报
回复
int a[9];
int *p=a;
cout<<*p<<" "<<*(p+5)<<endl;//分别输出第一个元素和第6个元素。
pengzhixi
2009-02-22
打赏
举报
回复
int a[9];
int *p=a;
cout<<*p<<" "<<*(p+5)<<endl;//分别输出第一个元素和第6个元素。
wushuai1346
2009-02-22
打赏
举报
回复
自己顶,希望有人回答3楼的问题,谢谢先
wuyanchao
2009-02-22
打赏
举报
回复
很明显lz看的是c++primer
稍微仔细想一下就ok了
tangshuiling
2009-02-22
打赏
举报
回复
如果不出意料,(vi.begin() + vi.size())/2 崩溃!~~!
wushuai1346
2009-02-22
打赏
举报
回复
也就是相当于vi.begin() + (vi.size()/2)对吧?vi.size()/2是距离,但是距离是偶数怎么办呢?也就是如果有6个元素,该会怎样处理呢?
机智的呆呆
2009-02-22
打赏
举报
回复
vector <int>::iterator mid = (vi.begin() + vi.size())/2;应该是错误的,迭代器没有重载 / 运算符
waizqfor
2009-02-22
打赏
举报
回复
vector <int>::iterator mid = (vi.begin() + vi.size())/2;
vector <int>::iterator mid = vi.begin() + vi.size()/2;
这两个代码的在最后的vi.begin() + vi.size()/2;和(vi.begin() + vi.size())/2; 的结合性不一样啊
vi.begin() + vi.size()/2;这是定义起始位置 然后+上长度的一半vi.size()/2 所以得到的就是中间变量
(vi.begin() + vi.size())/2而这个 要先计算起始+长度 然后再取中值
迭代器
运算详解(四十二)
在 C++ 中,
迭代器
不仅可以像普通指针那样通过解引用 ( *iter ) 来访问容器中的元素,还支持一系列随机访问运算(称为
迭代器
算术
运算),使我们可以在容器中灵活地移动和比较
迭代器
。这些运算符对于支持随机访问的容器(例如 vector 和 string)尤其适用。下面我们详细介绍这些运算符的含义和使用方法。
C++Primer——
迭代器
iterator
迭代器
是一种检查容器内元素并遍历元素的数据类型。 所有的标准库容器都定义了相应的
迭代器
类型,而只有少数容器支持下标
操作
。 例如: vector :: iterator iter; 定义了一个名为 iter 的变量,它的类型是由 vector 定义的 iterato
STL标准模板库—
迭代器
部分【C++】
STL
迭代器
1、概念
迭代器
,旨在提供一种方法,使得依次访问某容器内的各个元素,而又不需要暴露出该容器的内部表达方式。 2、
迭代器
的几个型别 值类型 差值类型 引用类型 指针类型
迭代器
类型(包括单向
迭代器
、随即
迭代器
、双向
迭代器
) – [1] input_iterator;//只读
迭代器
– [2] output_interator;//只写
迭代器
– [3] Forward_iterator;//正向
迭代器
– [4] Bidirectional_iterator;//双向
迭代器
– [5] Ran
【C++实战㉘】解锁C++ STL
迭代器
:从理论到实战的深度探索
本文聚焦 C++ STL
迭代器
深入实战,先阐释
迭代器
作为容器与算法桥梁的本质,详细划分输入、输出等五类
迭代器
,明确 vector、list 等容器适配的
迭代器
类型。接着讲解
迭代器
基本
操作
、
算术
运算及比较赋值,分享
迭代器
失效规避、反向
迭代器
使用、适配器应用等技巧。最后通过实战项目,实现支持多容器的通用数据处理工具,含需求分析、代码实现与兼容性测试,助力开发者掌握
迭代器
实战技能。
术语表
being是string和vector的成员,返回指向第一个元素的
迭代器
。也是一个标准库函数,输入一个数据,返回指向该数组首元素的指针。 end是string和vector的成员,返回一个指向尾后
迭代器
。也是一个标准库函数,输入一个数据,返回指向该数组尾元素的下一个位置的指针。 缓冲区溢出(buffer overflow)一种严重的程序故障,主要的原因是试图通过一个越界的索引访问容...
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章