已解决
第2关:还原键盘输入(list)
来自网友在路上 163863提问 提问时间:2023-11-12 13:25:09阅读次数: 63
最佳答案 问答题库638位专家为你答疑解惑
题目:
知识点:
列表list相较于数组:
优势:可在任意指定位置插入或者删除元素而不影响列表其他地方 。
劣势:无法直接进行下标索引,需要迭代器it逐个遍历。
代码:
#include <iostream>
#include <string>
#include <list>
using namespace std;int main()
{/********* Begin *********///读取输入,解析并输出复原后的输出string s;list<char>l;list<char>::iterator it=l.begin();while(cin>>s){int i=0;while(i<s.size()+1){if(s[i]=='\0'){it=l.begin();while(it!=l.end()){cout<<*it;it++;}cout<<endl;l.clear();it=l.begin();}if(s[i]>='A'&&s[i]<='Z'||s[i]>='a'&&s[i]<='z'||s[i]>='0'&&s[i]<='9')l.insert(it,s[i]);//**!为何迭代器it不用it++,不然不就一直指向l.begin()了吗?!**//else if(s[i]=='>')it++;else if(s[i]=='<')it--;else if(s[i]=='[')it=l.begin();else if(s[i]==']')it=l.end();i++;}}/********* End *********/
}
问题:
为何迭代器it不用it++,不然不就一直指向l.begin()了吗?
在这段代码中,`it` 是一个插入迭代器,用于将元素插入到列表 `l` 中。当调用 `l.insert(it, s[i])` 时,`it` 不需要手动增加,因为 `insert` 方法会在 `it` 指向的位置插入元素,并且会自动更新 `it`,使其指向新插入的元素。
因此,在这个情况下,不需要手动增加 `it`,因为 `insert` 方法会自动更新迭代器的位置。
查看全文
99%的人还看了
相似问题
- 【C++ STL】string类-----迭代器(什么是迭代器?迭代器分哪几类?迭代器的接口如何使用?)
- Python中的迭代器、生成器和装饰器
- Java集合大总结——Iterator(迭代器)接口
- Scala---迭代器模式+Trait特质特性
- Unity DOTS系列之System中如何使用SystemAPI.Query迭代数据
- 25期代码随想录算法训练营第十四天 | 二叉树 | 递归遍历、迭代遍历
- 【机试题】LazyIterator迭代器懒加载问题
- 「算法小记」-2:矩阵链相乘的方案数【迭代/递归/动态规划/区域化DP/记忆化搜索】(C++ )
- 算法通关村第七关|黄金挑战|迭代实现二叉树的前、中、后序遍历
- 算法通关村第七关-黄金挑战二叉树迭代遍历
猜你感兴趣
版权申明
本文"第2关:还原键盘输入(list)":http://eshow365.cn/6-38094-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!