作业介绍
家庭作业
必做
- 倒序输出
- 点和正方形的关系
- 希蒙与笔试:此题通过先提前用map将每道题的正确答案设置好,再去完成选项的对比
提高
- 不重复数字
- PRASE
特性:关联容器与线性结构有着根本性的不同,线性结构的元素是按照在容器中的位置来顺序保存和访问的,而关联容器的元素是按关键元素来保存和访问的。关联容器支持高效的关键字查找与访问。两个主要的关联容器类型是map与set。
set
概念:set里面每个元素只存有一个key,它支持高效的关键字查询操作。set对应数学中的“集合”。
特点:
- 储存同一类型的数据元素(这点和vector、queue等其他容器相同)
- 每个元素的值都唯一(没有重复的元素)
- 根据元素的值自动排列大小(有序性)
- 无法直接修改元素
- 高效的插入删除操作
用处:set就是关键字的简单集合。当只是想知道一个值是否存在时,set是最有用的
#include <set>
#include <iostream>
using namespace std;
int main(){
set<int> a; //定义一个集合
int arr[5]= {0,5,13,19};
set<int> b(arr,arr+5); //定义并初始化集合元素从数组arr中获取
set<int>::iterator it = b.begin(); //创建一个set类型迭代器
for(;it!=b.end();it++){
cout << *it << endl;
} //遍历并输出
cout << b.empty() << endl; //判断是否为空,非空为0,空为1
cout << b.size() << endl; //获取集合长度
cout << b.count(13) << endl; //统计集合中指定元素出现的次数
b.insert(8); //将指定元素插入到集合中,插入元素会自动插入到合适的位置,使整个集合有序
b.erase(13);//删除指定的元素
return 0;
}
map
概念:map是STL的一个关联容器,它以<key,value>键值对的形式存储,且map的内部自建一个红黑树,使得其可以自动排序。在Python中被称呼为“字典”
特点:
- 第一个可以称为关键字(key),每个关键字只能在map中出现一次;
- 第二个可能称为该关键字的值(value);
- key既不能重复也不能被修改
用处:map在做数据映射的时候能够非常简便的完成代码构建,并且保持查询高效。
#include <map>
#include <iostream>
using namespace std;
int main(){
map<string,int> a; //第一个表示key数据类型,第二个表示value数据类型
a["one"] = 1;
a["tow"] = 2;
a["one"] = 3;
//赋值时,key值作为下标,后面的数据作为对应key的value元素,在map中新添加一对数据
//赋值时,如果key值已经存在,表示将此key值对应的value元素修改为新的数据
cout << a["one"] << endl;
//key值可以作为下标,直接输出对应的元素
cout << a["three"] << endl;
//注意:下标访问不会做下标检查,如上语句不会报错,但打印结果为空,因为下标访问会插入不存在的key,对应的value为默认值
a.insert({"three",3}); //将指定键值对插入到map中,插入元素会自动插入到合适的位置,使整个map有序,默认是按照key从小到大排序
a.erase("one"); //删除指定key值的键值对
cout << a.count("three") << endl; //查询指定key值是否出现,结果是1表示出现,0表示没有
cout << a.empty() << endl; //判断是否为空,非空为0,空为1
cout << a.size() << endl; //获取map长度
map<string,int>::iterator it = a.begin(); //创建一个map类型迭代器
for(;it!=a.end();it++){
cout << it->first << " " << it->second << endl;
} //遍历并输出,因为是类结构体指针,每个键值对通过first访问key,second访问value
return 0;
}
题目
认领作业后才可以查看作业内容。
- 状态
- 正在进行…
- 题目
- 9
- 开始时间
- 2025-1-11 0:00
- 截止时间
- 2026-1-11 23:59
- 可延期
- 24 小时