辽宁省信息学文字公益课《跟我学NOIP》开课啦!第六课:STL介绍

网友投稿 2019-06-27 14:12

为了让同学们能够利用零散时间学习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