辽宁省信息学文字公益课《跟我学NOIP》开课啦!第六课:STL介绍
为了让同学们能够利用零散时间学习NOIP,辽竞委经过课程调研后,尝试采用文字版公益课进行教学。课程共分十期,聘请NOI国赛选手按照竞赛大纲归纳知识点,采用文字和视频讲解,结合练习题和题解帮助同学们快速掌握NOIP的重点和难点。由于课程都是利用业余时间编写,无法保证定期推出课程,我们尽量每周三,周末推出两期内容供大家学习,不便之处请大家谅解。文字公益课处于探索阶段,希望大家多提意见和建议,对于课程中的问题可以在留言区提问,我们会尽快进行解答。
《跟我学NOIP》面向全社会征集文字课程内容。欢迎竞赛教师,竞赛学生和社会机构踊跃投稿,共同为信息学普及和发展贡献一份力量。
上期作业解析
将上期例题中的第9行代码改成if(x.a>y.a) return true;
其他代码不变。
第六课STL介绍
vector
vector是一个容器。它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的不定长数组。
模型:vector<类型>变量名;
vectordemo//建立一个vector,int为数组元素的数据类型,数组名为demo
常用方法:
demo.push_back(10);// 把1压入vector末尾,也就是demo[0]=10
demo.size();//获得vector的长度,结果为1
demo.empty();//判断容器是否为空,结果为false
demo[0];//读出第1个数据,结果为10
demo.clear();//清空容器中的内容。
二维vector模型:vector >变量名
vectordemo(10)//定义一个长度为10的二维数组
注意:如果demo[10]则表示三维数组
map
map是STL的一个关联容器,它提供一对一的映射。我们可以把map的作用理解成数组,只不过map可以提供多类型的相互映射,而数组只能实现数值和其他类型的映射。
模型:map<类型1,类型2>变量名;
例如:map //定义一个变量stu,实现字符串之间的映射。
map赋值和访问:
stu["class4"] = "TOM";//建立class4和TOM的映射
cout<< stu["class4"];//访问stu["class4"]中的内容
常用方法:
stu.size() //返回stu中元素数量
stu.clear() //清空stu所有元素
stu.empty() //判断是否为空
set
set是一个内部自动有序而且不重复元素的容器。
set中的元素是不重复的,重复值会被自动删除,并且所有元素是从小到大排序。set的内容不可以别修改,如果想想修改只能删除该元素再重新插入新内容。
set模型:set<类型>变量名;
例如:setdemo;
set的一些常见操作:
begin() 返回指向第一个元素的迭代器
clear() 清除所有元素
count() 返回某个值元素的个数
empty() 如果集合为空,返回true(真)
end() 返回指向最后一个元素之后的迭代器,不是最后一个元素
erase() 删除集合中的元素
find() 返回一个指向被查找到元素的迭代器
insert() 在集合中插入元素
size() 集合中元素的数目
巩固练习:
给出1个数n,统计2到n这n-1个数,除1以外最小的约数是多少。
例如:n = 6,2到6这5个数,
除了1之外最小约数为2的包括:2 4 6
除了1之外最小约数为3的包括:3。
除了1之外最小约数为4的没有。
除了1之外最小约数为5的包括:5。
除了1之外最小约数为6的没有。
因此,按照数量逐个输出:
3
1
0
1
--end--
声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com