我在某处读到列表容器实现为双向链接列表,因此,如果是这样,那么我们如何使用++
运算符https://www.geeksforgeeks.org/introduction-iterators-c/遍历列表容器,这里给出的列表容器迭代器是双向的,这似乎是可以理解的,但双向迭代器可以通过使用++
或--
进行迭代,这似乎是不可能的,就像我们可以做到的那样,然后list将具有连续的内存分配,这将使其类似于vector。
我也尝试通过在代码中执行操作,结果证明对++
执行list<int>::iterator
是有效的。
所以,请告诉我我哪里错了。
最佳答案
So, please tell me where I am wrong.
假设运算符++与连续内存有关,这似乎是错误的。
++只是一个运算符,它对不同类型的对象执行不同的操作。按照惯例,它会递增。在整数上,它将值增加1。在迭代器上,使迭代器引用下一个同级元素。所有迭代器均支持预增量运算符。所有输入迭代器和输出迭代器都支持后递增。
指针是迭代器类型的一个示例。它是数组的迭代器。像所有其他迭代器类型一样,它也支持运算符++。
除数组以外的所有其他类型的迭代器都不是指针。鉴于指针是唯一的迭代器基本类型,这意味着所有其他迭代器类型都是类。默认情况下,类没有运算符++,但是可以为类重载运算符。迭代器必须具有此类重载。
so in
list::iterator
there isoperator++
function which makesthis=this->next
right?
不完全的。
this
无法修改。就像this->node = this->node->next
一样。
关于c++ - 列表容器中的迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61391038/