辽宁省信息学文字公益课《跟我学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

https://cdn.china-scratch.com/timg/190629/1412252L2-0.jpg

--end--

声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com