作业介绍

家庭作业

必做

  • 倒序输出
  • 点和正方形的关系
  • 希蒙与笔试:此题通过先提前用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 小时