社区
C++ 语言
帖子详情
关于list的iterator如何加减
peng6sl
2010-03-08 01:30:40
小弟初学STL中的list,有许多都不太明白,关于iterator我所知道似乎是一个指向list的指针,我想让这个iterator可以跳跃的加减,而不是只能 iterator++,iterator--的用,我也试过iterator+2但是都不行,只能一个一个来,
还请指点指点哈
...全文
984
11
打赏
收藏
关于list的iterator如何加减
小弟初学STL中的list,有许多都不太明白,关于iterator我所知道似乎是一个指向list的指针,我想让这个iterator可以跳跃的加减,而不是只能 iterator++,iterator--的用,我也试过iterator+2但是都不行,只能一个一个来, 还请指点指点哈
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hlm_87
2010-03-08
打赏
举报
回复
list是链式存储,内存不是连续的,所以不能随机存取。iterator就不能做加法运算了。不过对于vector来说,iterator是能够执行加法的。程序如下:
#include <vector>
#include <iostream>
using namespace std;
int main()
{
vector<int> coll;
for (int i=-3; i<=9; ++i)
{
coll.push_back(i);
}
cout << "number/distance: " << coll.end()-coll.begin() << endl;
vector<int>::iterator pos;
for (pos = coll.begin(); pos < coll.end()-1; pos += 2)
{
cout << *pos << ' ';
}
cout << endl;
}
Julykey
2010-03-08
打赏
举报
回复
因为你使用的是STL中的list,它使用的是双向迭代器,这个和vector是不同的。当然你也可以使用advance来达到你的目的。还有你可以自己去实现list,这样你就可以按照自己的意思跳跃迭代器了
taodm
2010-03-08
打赏
举报
回复
楼主还是找本《stl源码剖析》吧
yyg990441
2010-03-08
打赏
举报
回复
4楼应该说错了,效率不会低,哪怕对于vector,用advance效率也不会低.因为有相关的iterator_traits记录iter的相关信息
peng6sl
2010-03-08
打赏
举报
回复
谢谢各位哈,用advance()就可以做到,不过楼上的为什么会效率低呢
yyg990441
2010-03-08
打赏
举报
回复
可以用advance()来做,如
list<int>::iterator pos = coll.begin();
advance( pos, 3 );
不过,你要保证这样移动3下不会超过链表尾.
为了安全,
最好
if( distance( coll.begin(), coll.end() )<3 ) advance( pos, 3 );
yshuise
2010-03-08
打赏
举报
回复
需要调用函数:advance(iter,5);
冻结
2010-03-08
打赏
举报
回复
list的迭代器,
只能++,--。
不能+1,-1。
可以用advance(), 做++,--的操作。
但,效率低。
healer_kx
2010-03-08
打赏
举报
回复
嗯,和vector的不同,都是原理不同所致。
vector是数组,
list是链表。
昵称很不好取
2010-03-08
打赏
举报
回复
list相当于链表,它的迭代器不能随便加减一个数~~
pengzhixi
2010-03-08
打赏
举报
回复
因为list的迭代器不是随即访问迭代器,只能++或者--不能像vector那么用。
Iterator
迭代器的相关问题
本文深入探讨了STL容器中
iterator
的
加减
操作、
list
容器特性、排序算法partial_sort的应用,以及
list
::splice实现的
list
拼接功能。详细解析了
iterator
加减
方法advance和distance的使用场景,阐述了partial_sort的原理及其在特定场景下的高效应用,同时介绍了
list
::splice如何在
list
间移动元素。内容涵盖了STL容器的基础操作和高级应用,旨在帮助开发者掌握STL容器的高效使用技巧。
使用stl中的 advance和 distance 方法来进行
iterator
的
加减
本文详细介绍了如何在STL中使用advance和distance方法来进行迭代器的
加减
操作,解决了在使用
list
容器时遇到的无法进行迭代器
加减
的问题,并提供了实例代码演示。
【C++】深入理解自定义
list
容器中的
list
_
iterator
:迭代器实现详解
本文聚焦于C++中
list
容器迭代器的设计与实现。介绍了
list
容器需要迭代器的原因,阐述了迭代器的基本结构、操作符重载,分析了迭代器与节点、
list
容器的关系,还说明了使用迭代器遍历链表、实现const迭代器及处理迭代器失效问题的方法。
【STL】
list
本文详细介绍了C++ STL中的
list
容器的工作原理,包括其内部实现细节、迭代器的设计与使用,以及常见操作如排序、插入和删除的实现方式。文章还探讨了
list
容器在实际应用中的性能表现。
C++ 语言
65,210
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章