永发信息网

[C++标准程序库的问题] list的迭代器是否可以随机移动?

答案:2  悬赏:50  手机版
解决时间 2021-03-02 06:57
  • 提问者网友:你独家记忆
  • 2021-03-01 08:00
[C++标准程序库的问题] list的迭代器是否可以随机移动?
最佳答案
  • 五星知识达人网友:平生事
  • 2021-03-01 08:55
std::list是顺序容器,但不是随机访问容器(仅有std::vector,C数组和c++11中的std::array是),所以其迭代器只支持++和--这种双向的链式操作(c++11中的slist则只支持++)
如果想一次移动多个位置,也可以使用<iterator>里的advance函数,例子如下:

list<int>::iterator it = mylist.begin();
advance (it,5);
cout << "The sixth element in mylist is: " << *it << endl;
全部回答
  • 1楼网友:底特律间谍
  • 2021-03-01 09:41
由于list的内部实现是双向链表,链表就要求迭代器(指针)只能依次从前向后(或从后向前)移动,依次移动一个位置,因此list只定义了++和--操作符,而没有定义+、-、+=和-=等操作符。所以要想list的迭代器移动一段距离,就需要自己编程实现,用一个小循环就行了,代码如下: #include using namespace std; list mylist; … // mylist的初始化及其他操作 list::const_iterator itlist = mylist.begin(); // itlist向前移动len个距离 for ( int i= 0; i < len; i++ ) { ++itlist; } … // 其他操作
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯