用户:
Aaaaaaaaff查看:2 回复:5 评论:2 创建时间:2020-07-03T18:44:00
我三千又双叒叕过来水教程啦~
这次我就冒昧给大家来点儿阴间[doge],喵进阶一些的东西
C++迭代器的(简单)使用
迭代器能干啥呢,大家想必都知道链表吧,就是kitten里的列表(像我这种只会做聊天室的最喜欢它了[doge])
迭代器能为我们遍历链表容器(如list)中的元素,当然这个教程贴我讲的只是list链表的创建和使用迭代器访问链表中的指定元素,仅此而已(下周一期末考,要复习)。周末有空的话我再做一下更高阶的教程。
首先,老盆友头文件和命名空间。这次需要四个头文件,当然你用万能头也可以,但没有#include <unistd.h>
#include <iostream>
#include <list>
#include <vector>
#include <unistd.h>
using namespace std;
按我滴一贯作风,水作肯定是要花里胡哨哒~加个逐字输出特效函数,这个我就不讲了,炒鸡简单
void xz_3_0_01(const string font,long int x,long int ys,long int ys2){
cout<<"\033[?25l\033["<<ys<<"m"<<font<<"\n\033[1A";
cout<<"\033["<<ys2<<"m";
for(int i = 0; i < font.size(); i++)
{
cout << font[i];
usleep(x);
}
cout<<"\033[0m\n";
}
主函数
int main(){
return 0;
}
首先先定义一个整形数组
int xz[10]={1,3,5,7,9,2,4,6,8,10};
接下来就是创建一个链表了,使用这类模板都要先创建一个list对象
list<int> jc(xz,xz+10);
这里我创建了一个list对象jc,储存整形类型的数据。(xz,xz+10)设定了它的数值(起始值xz,结束xz+10)
接下来,将这个链表使用sort函数从小到大排序
jc.sort();
接下来是重头戏啦,定义一个迭代器shouxiang,并将shouxiang初始化为指向jc的第一个元素
list<int>::iterator shouxiang=jc.begin();
接下来我们定义一个整形变量sc,
long int sc;
输出一段话并让用户输入指定输出链表项的第sc项
xz_3_0_01("这是一个数组:1,3,5,7,9,2,4,6,8,10",25000,91,97);
xz_3_0_01("程序将会调用sort将这个数组进行排序",25000,91,97);
xz_3_0_01("请输入一个数n,终端将会显示链表中按从小到大排列的第n个数",25000,91,97);
cout<<"\033[?25h";
cin>>sc;
cout<<"\033[?25l";
使用for循环通过迭代器访问jc中从小到大排列的第sc个数
for(int i=1;i<=sc-1;i++){
shouxiang++;
}
最后将这个数输出来~
cout<<"该数是"<<*shouxiang<<endl;
OK,圆满完成。
完整代码:
#include <iostream>
#include <list>
#include <vector>
#include <unistd.h>
using namespace std;
void xz_3_0_01(const string font,long int x,long int ys,long int ys2){
cout<<"\033[?25l\033["<<ys<<"m"<<font<<"\n\033[1A";
cout<<"\033["<<ys2<<"m";
for(int i = 0; i < font.size(); i++)
{
cout << font[i];
usleep(x);
}
cout<<"\033[0m\n";
}
int main(){
int xz[10]={1,3,5,7,9,2,4,6,8,10};
list<int> jc(xz,xz+10);
jc.sort();
list<int>::iterator shouxiang=jc.begin();
long int sc;
xz_3_0_01("这是一个数组:1,3,5,7,9,2,4,6,8,10",25000,91,97);
xz_3_0_01("程序将会调用sort将这个数组进行排序",25000,91,97);
xz_3_0_01("请输入一个数n,终端将会显示链表中按从小到大排列的第n个数",25000,91,97);
cout<<"\033[?25h";
cin>>sc;
cout<<"\033[?25l";
for(int i=1;i<=sc-1;i++){
shouxiang++;
}
cout<<"该数是"<<*shouxiang<<endl;
return 0;
}
如本期教程出现错误请在评论区给三千指正喔~
体验:https://code.xueersi.com/home/project/detail?lang=code&pid=喵88303&version=cpp&form=compiler&langType=cpp
我又走啦~(打开B站)