作业介绍
哈希表又称散列表,一种以「key-value」形式存储数据的数据结构。所谓以「key-value」形式存储数据,是指任意的键值 key 都唯一对应到内存中的某个位置。只需要输入查找的键值,就可以快速地找到其对应的 value。可以把哈希表理解为一种高级的数组,这种数组的下标可以是很大的整数,浮点数,字符串甚至结构体。
-
- 定义map类型,有三个参数
第一个参数是键的数据类型
第二个参数是值的数据类型
第三个参数是排序规则,不写的话就按照默认的排序规则,也就是按照键的升序
举例:
map<int,int>mp;
定义了一个叫mp的map类型,并且键值都是int类型
降序:
map<int, int, greater<int> > mp;
按键降序排序
- 输出map中的元素
#include<bits/stdc++.h>
using namespace std;
map<string,int>m;
int main()
{
m["aa"]=4;
m["bb"]=3;
m["cc"]=2;
m["dd"]=1;
//第一种遍历输出
map<string,int>::iterator it;
for(it=m.begin();it!=m.end();it++)
{
cout<<"键="<<it->first<<" 值="<<it->second<<endl;
}
return 0;
}
- 添加数据
1:直接使用数组下标
m["aa"]=11;
m[2]=22;
多元组映射
map<pair<int, int>, int> m;
//第一种写法
m[make_pair(1, 2)] = 3;
cout << m[make_pair(1, 2)] << endl;
//第二种写法
m[{3, 4}] = 5;
cout << m[{3, 4}] << endl;
2:使用insert添加元素
map<string,int>m;//定义m
m.insert(pair<string,int>("aaa",123));
- 查找数据
使用find函数
使用count函数
(1)find函数
find函数查找成功会返回指向它的迭代器,没有找到的话,返回的是end这个迭代器
#include <iostream>
#include <map>
using namespace std;
map<string,int>m;
int main()
{
m["aa"]=4;
map<string,int>::iterator k;
k = m.find("bb");
if(k == m.end())
{
cout << "no" << endl;
}
else
{
cout << "yes" << endl;
}
k = m.find("aa");
if(k == m.end())
{
cout << "no" << endl;
}
else
{
cout << "yes" << endl;
}
return 0;
}
(2)count函数
count函数是查找这个键的出现次数,map中键是唯一的,所以它的值要么是0,要么是1
与find类似,返回的是整型
m["aa"]=4;
int k1 = m.count("aa");//k1返回1
int k2 = m.count("bb");//k2返回0
- 删除数据
erase函数
erase里的参数可以直接写键,也可以写迭代器
erase(m.begin(),m.end());//这句话代表清空m中的所有内容
m["aa"]=4;
m.erase("aa");
map<string,int>::iterator k;
k = m.find("aa");
if(k != m.end())
{
m.erase(k);
}
其它有用的函数
m.clear() 删除所有元素
m.size() 返回map中元素的个数
题目
认领作业后才可以查看作业内容。
- 状态
- 正在进行…
- 题目
- 13
- 开始时间
- 2025-1-9 0:00
- 截止时间
- 3333-5-1 23:59
- 可延期
- 24 小时