1.哈希表介绍
//1.介绍哈希表unordered_map<int, int>map;//unordered_map是不按照键值排序的 (使用头文件unordered_map)/*unordered_map<int, int>其中的第一个int代表的是键,第二个int代表的是值所以称为键值对,以一对一对的形式出现*///[]即可以修改,也可插入map[1] = 1;//向哈希表中插入键值对 1:1map[2] = 2;map[2] = 123123;//修改cout << map[3] << endl;//因为是int类型的“值”,默认值为0,向哈希表中插入元素 3:0map[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:1map[2] = 2;map[2] = 123123;//修改cout << map[3] << endl;//因为是int类型的“值”,默认值为0,向哈希表中插入元素 3:0map[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;
}