1.哈希表介绍
//1.介绍哈希表
unordered_map<int, int>map;//unordered_map是不按照键值排序的 (使用头文件unordered_map)
/*
unordered_map<int, int>其中的第一个int代表的是键,第二个int代表的是值
所以称为键值对,以一对一对的形式出现
*/
//[]即可以修改,也可插入
map[1] = 1;//向哈希表中插入键值对 1:1
map[2] = 2;
map[2] = 123123;//修改
cout << map[3] << endl;//因为是int类型的“值”,默认值为0,向哈希表中插入元素 3:0
map[4]++; //向哈希表中插入元素 4:1 ,这十分常用
cout << map[4] << endl;
2.insert函数
//2.insert函数
map.insert(make_pair(6, 666));
cout << map[6] << endl;
map.insert(make_pair(6, 777));//此时不会报错 也不会修改 等于无用代码
/*
导致这种情况的原因可以理解为:是在使用insert函数时,会先遍历一遍哈希表
然后查看是否已有键值为6的键值对,如果有就等于无效,如果没有就插入。
*/
cout << map[6] << endl;
3.迭代器
//3.迭代器(iterator)
//迭代器:是一个类,可以看成指针做:* -> ++ 操作
unordered_map<int, int>::iterator it;
it = map.begin();//begin 返回指向map的第一个键值对的迭代器
for (;it != map.end();it++) {
cout << it->first << " " << (*it).second << endl;
}
4.find函数
//4.find函数
//参数为key,如果找到键值为key的键值对返回指向该键值对的迭代器,否则返回end()
if (map.find(7) != map.end()) {
cout << map[7] << endl;
}
else {
cout << "没找到" << endl;
}
return 0;
整体代码:
#include<iostream>
#include<unordered_map>
using namespace std;
int main() {
//1.介绍哈希表
unordered_map<int, int>map;//unordered_map是不按照键值排序的 (使用头文件unordered_map)
/*
unordered_map<int, int>其中的第一个int代表的是键,第二个int代表的是值
所以称为键值对,以一对一对的形式出现
*/
//[]即可以修改,也可插入
map[1] = 1;//向哈希表中插入键值对 1:1
map[2] = 2;
map[2] = 123123;//修改
cout << map[3] << endl;//因为是int类型的“值”,默认值为0,向哈希表中插入元素 3:0
map[4]++; //向哈希表中插入元素 4:1 ,这十分常用
cout << map[4] << endl;
//2.insert函数
map.insert(make_pair(6, 666));
cout << map[6] << endl;
map.insert(make_pair(6, 777));//此时不会报错 也不会修改 等于无用代码
/*
导致这种情况的原因可以理解为:是在使用insert函数时,会先遍历一遍哈希表
然后查看是否已有键值为6的键值对,如果有就等于无效,如果没有就插入。
*/
cout << map[6] << endl;
//3.迭代器(iterator)
//迭代器:是一个类,可以看成指针做:* -> ++ 操作
unordered_map<int, int>::iterator it;
it = map.begin();//begin 返回指向map的第一个键值对的迭代器
for (;it != map.end();it++) {
cout << it->first << " " << (*it).second << endl;
}
//4.find函数
//参数为key,如果找到键值为key的键值对返回指向该键值对的迭代器,否则返回end()
if (map.find(7) != map.end()) {
cout << map[7] << endl;
}
else {
cout << "没找到" << endl;
}
return 0;
}