社区
C++ 语言
帖子详情
秒贴 random access iterator
iamnobody
2011-10-10 05:00:04
请问 random_access_iterator 这个类型的迭代器有什么要求?主要关心的是是否要求内存连续。因为我怕我为我的容器定义了某个random access iterator后,他的copy之类的操作会被优化成memmove();(见过这种现象)但是我的迭代器虽然是可以支持+=。但是内存只是有序,但是不连续。这样会出错的。
期待标准党的复制粘贴。
...全文
150
18
打赏
收藏
秒贴 random access iterator
请问 random_access_iterator 这个类型的迭代器有什么要求?主要关心的是是否要求内存连续。因为我怕我为我的容器定义了某个random access iterator后,他的copy之类的操作会被优化成memmove();(见过这种现象)但是我的迭代器虽然是可以支持+=。但是内存只是有序,但是不连续。这样会出错的。 期待标准党的复制粘贴。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
景荣1
2011-10-10
打赏
举报
回复
POD = 朴素的数据类型
taodm
2011-10-10
打赏
举报
回复
csdn里就有下载。
iamnobody
2011-10-10
打赏
举报
回复
求标准,,,还是标准没有?
标准在哪里下载?
iamnobody
2011-10-10
打赏
举报
回复
[Quote=引用 14 楼 qq120848369 的回复:]
在C++中,我们把传统的C风格的struct叫做POD(Plain Old Data)对象。一般来说,POD对象应该满足如下特性。 对于POD类型T的对象,不管这个对象是否拥有类型T的有效值,如果将该对象的底层字节序列复制到一个字符数组(或者无符号字符数组)中,再将其复制回对象,那么该对象的值与原始值一样。考试就到 对于任意的POD类型T,如果两个T指针分别指向两个不同的对象obj1和o……
[/Quote]
还是不知道导致memmove的原因,我还是再看看copy的实现吧。。
qq120848369
2011-10-10
打赏
举报
回复
在C++中,我们把传统的C风格的struct叫做POD(Plain Old Data)对象。一般来说,POD对象应该满足如下特性。 对于POD类型T的对象,不管这个对象是否拥有类型T的有效值,如果将该对象的底层字节序列复制到一个字符数组(或者无符号字符数组)中,再将其复制回对象,那么该对象的值与原始值一样。考试就到 对于任意的POD类型T,如果两个T指针分别指向两个不同的对象obj1和obj2,如果用memcpy库函数把obj1的值复制到obj2,那么obj2将拥有与obj1相同的值。 简言之,针对POD对象,其二进制内容是可以随便复制的,在任何地方,只要其二进制内容在,就能还原出正确无误的POD对象。对于任何POD对象,都可以使用memset()函数或者其他类似的内存初始化函数。
pengzhixi
2011-10-10
打赏
举报
回复
POD就是由 int,float等基本类型以及基本类型的指针和基本类型组成的 struct ,union都属于POD
qq120848369
2011-10-10
打赏
举报
回复
[Quote=引用 11 楼 mingliang1212 的回复:]
引用 8 楼 qq120848369 的回复:
引用 7 楼 mingliang1212 的回复:
已经知道不要求连续了,因为deque就是不连续的random access iterator //
但是还是期待标准党的更多要求
random iterator 还是人为规定的东西,它认为deque应该表现得像数组一样,所以把迭代器的类型规定成random. 就像list的迭代器一样……
[/Quote]
对,容器的迭代器划到哪一种类型是人定的,绝对不是导致memmove的原因额,要淡定.
iamnobody
2011-10-10
打赏
举报
回复
[Quote=引用 8 楼 qq120848369 的回复:]
引用 7 楼 mingliang1212 的回复:
已经知道不要求连续了,因为deque就是不连续的random access iterator //
但是还是期待标准党的更多要求
random iterator 还是人为规定的东西,它认为deque应该表现得像数组一样,所以把迭代器的类型规定成random. 就像list的迭代器一样,我规定它是random iterator 也一样……
[/Quote]
POD是什么?
另外,根据《范型编程与STL》的说法。random access iterator 要求+=,-=,<,>操作都是0(1);
iamnobody
2011-10-10
打赏
举报
回复
[Quote=引用 9 楼 pengzhixi 的回复:]
看标准文档547和548页 两页的要求就是了。
[/Quote]
不知道在哪里找标准的说。。。
pengzhixi
2011-10-10
打赏
举报
回复
看标准文档547和548页 两页的要求就是了。
qq120848369
2011-10-10
打赏
举报
回复
[Quote=引用 7 楼 mingliang1212 的回复:]
已经知道不要求连续了,因为deque就是不连续的random access iterator //
但是还是期待标准党的更多要求
[/Quote]
random iterator 还是人为规定的东西,它认为deque应该表现得像数组一样,所以把迭代器的类型规定成random. 就像list的迭代器一样,我规定它是random iterator 也一样能实现+n的操作,只不过开发STL的人觉得不合适而已.
对象的复制能否memmove与这个迭代器可以说是关系不大的,必须要看对象类型是否POD~
iamnobody
2011-10-10
打赏
举报
回复
已经知道不要求连续了,因为deque就是不连续的random access iterator //
但是还是期待标准党的更多要求
qq120848369
2011-10-10
打赏
举报
回复
还有,copy行为直接调用memmove的前提可不是random_iterator的原因,是POD+random_iterator的原因.
qq120848369
2011-10-10
打赏
举报
回复
还是连续内存才行哦。
shenyan008
2011-10-10
打赏
举报
回复
同期待。
only_lonely
2011-10-10
打赏
举报
回复
同期待标准党的复制粘贴。
Qlaiaqu
2011-10-10
打赏
举报
回复
random_access_iterator
它的特点就是可以像数组[]一样访问,而其它类型的迭代器则不行
昵称很不好取
2011-10-10
打赏
举报
回复
random_access_iterator,随机访问,应该需要连续内存的
java入门-第16章 Collection、泛型、
Iterator
本课程为想转行学IT的朋友量身定制,快速入门,轻松上手,让非计算机专业的同学能快速学会Java编程. 课程会从计算机的基本组成原理讲起,门槛低,实用性强,让大家轻松掌握一项编程技能。后期课程全部更新完毕后还会帮大家推荐就业,指导简历编写,以及面试相关的指导.
The Preliminary Contest for ICPC Asia Nanjing 2019 ICPC徐州站网络赛 J
Random
Access
Iterator
(树形DP+概率DP)
题目大意:每次dfs随机选择儿子中的一个,选择儿子的个数次,问最终能得到正确的树深度的概率 题目思路:榜好像歪了啊,感觉这题贼水啊...同校大佬在我们9题后过了三分钟就一发过了这题,直接罚时压我们一头...
《STL源码分析》 rotate函数的
random
access
iterator
版 分析上篇
《STL源码分析》 rotate函数的
random
access
iterator
版 分析 函数描述 《STL源码分析》那本书里介绍的rotate函数的作用是交换[first, middle)和[middle, last)内的元素,比如序列{1, 2, 3, 4, 5, 6, 7, 8, 9}在元素...
Random
Access
Iterator
Random
Access
Iterator
树型概率DP dp[u]代表以当前点作为根得到正确结果的概率 将深度最深的几个点dp[u]很明显是1 然后很简单的转移 有k次,但我们要先看一次的情况,然后再推到k次,k次中只要有一次就可以正确,...
对STL 中算法rotate
Random
access
iterator
源码理解
主要通过下面的表中例子来理解:先给出源码(《STL源码解析》...// __gcd() 应用于 __rotate() 的
random
access
iterator
版 template EuclideanRingElement __gcd(EuclideanRingElement m, EuclideanRingElement n)
C++ 语言
64,645
社区成员
250,475
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章