迭代器

我在某处读到,列表容器是作为双链路列表实现的,如果是真的,那么我们如何通过使用 ++ 经营者 https:/www.geeksforgeeks.orgintroduction-iterators-c 这里给出了列表容器的迭代器是双向的,这似乎是可以理解的,但是双向迭代器可以通过使用 ++-- 这应该是不可能的,因为如果我们能做到这一点,那么list就会有连续的内存分配,这将使它类似于向量。

我也在代码中尝试了一下,结果发现这样做是有效的。++ 关于 list<int>::iterator.

所以,请告诉我我错在哪里。

解决方案:

所以,请告诉我,我哪里错了。

你似乎错了,你认为操作符++与连续内存有关。

++只是一个对不同类型的对象做不同事情的操作符。传统上,它做的是增量运算。在整数上,它将值增加1;在迭代器上,它使迭代器引用下一个同级元素。所有迭代器都支持预增操作符,所有输入迭代器和输出迭代器都支持后增操作符。

Pointer是迭代器类型的一个例子。它是一个数组的迭代器。就像所有其他迭代器类型一样,它也支持运算符++。

除了数组之外,所有其他类型的迭代器都不是指针。鉴于指针是唯一的基本迭代器类型,这意味着所有其他迭代器类型都是类。类默认没有运算符++,但运算符可以为类重载。迭代器必须有这样的重载。

所以在 list::iteratoroperator++ 功能,使 this=this->next 对不对?

不尽然。this 不能修改。这将是这样的 this->node = this->node->next.

给TA打赏
共{{data.count}}人
人已打赏
未分类

将DNN(DotNetNuke)迁移到Godaddy Plesk。

2022-9-8 4:46:19

未分类

谷歌存储一次为多个对象创建签名的网址。

2022-9-8 4:57:16

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索