作业介绍

哈希表又称散列表,一种以「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 小时