免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 15943 | 回复: 8
打印 上一主题 下一主题

stl中list的迭代器的用法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-10-27 18:15 |只看该作者 |倒序浏览
因为list不是连续存储的,和vector不一样,迭代器不能这样用

#include <list>

using namespace std;
main()
{

        int ia[7]={0,1,2,3,4,5,6};
list <int> ilist(ia+4,ia+6);}

   可是我看c++premier page224,练习6.10,答案说这种用法是对的。疑惑ing

论坛徽章:
0
2 [报告]
发表于 2007-10-27 19:04 |只看该作者
没看出来LZ的问题在哪里.

论坛徽章:
0
3 [报告]
发表于 2007-10-27 20:12 |只看该作者
我的问题是,
  我觉得代码里面有错误,list的迭代器不能用ia+4,ia+6

论坛徽章:
0
4 [报告]
发表于 2007-10-27 20:44 |只看该作者
可以把,ia是数组的头指针,+4就是指向四个元素的指针吧。
这是在给构造函数传参,应该可以吧。
没看书-瞎说的

论坛徽章:
0
5 [报告]
发表于 2007-10-27 20:47 |只看该作者
原帖由 declare 于 2007-10-27 20:12 发表
我的问题是,
  我觉得代码里面有错误,list的迭代器不能用ia+4,ia+6

ia此时被自动转换为指针,而指针是random-access iterator
注意区别于list内部的迭代器

论坛徽章:
0
6 [报告]
发表于 2007-10-27 22:52 |只看该作者
原帖由 bloodsnow 于 2007-10-27 20:44 发表
可以把,ia是数组的头指针,+4就是指向四个元素的指针吧。
这是在给构造函数传参,应该可以吧。
没看书-瞎说的


  s是的,这是再给构造函数传参;可是在stl中,这两个参数表示迭代器的begin和end;如果不是list而是vector,那我认为没有问题,可是list不是连续存储的,这两个参数可是连续存储的;会不会有问题呢

论坛徽章:
0
7 [报告]
发表于 2007-10-27 22:55 |只看该作者
原帖由 declare 于 2007-10-27 22:52 发表


  s是的,这是再给构造函数传参;可是在stl中,这两个参数表示迭代器的begin和end;如果不是list而是vector,那我认为没有问题,可是list不是连续存储的,这两个参数可是连续存储的;会不会有问题呢

list需要的是bidirectional iterator,而s被转换后的指针是random-access iterator,当然没问题

论坛徽章:
0
8 [报告]
发表于 2007-10-27 23:00 |只看该作者
list(const T* first, const T* last) { range_initialize(first, last); }

论坛徽章:
0
9 [报告]
发表于 2007-11-08 00:39 |只看该作者
原帖由 declare 于 2007-10-27 18:15 发表
因为list不是连续存储的,和vector不一样,迭代器不能这样用

#include

using namespace std;
main()
{

        int ia[7]={0,1,2,3,4,5,6};
list  ilist(ia+4,ia+6);}

   可是我看c++premie ...


其一、程序中并没有使用 list 的迭代器。

其二、对于上述用来初始化 list 容器的迭代器的最低要求是“向前只读”(Reads forward),所以即使是用另外一个 list 的迭代器(“前后读写”,Reads and writes forward and backward)也是可以的,更何况是作为“随机读写”(Reads and writes with random access)迭代器的普通指针。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP