STL之map有序哈希表使用方法
导读:STL之map有序哈希表使用方法,本文摘要:STL之map有序哈希表使用方法的介绍,下面来一起了解一下吧。 map :映射,存储键-值对,并按键升序排序。 1.头文件: #include iostream>#include map> 2.创建map: mapstr
STL之map有序哈希表使用方法
本文摘要:STL之map有序哈希表使用方法的介绍,下面来一起了解一下吧。
map:映射,存储键-值对,并按键升序排序。
1.头文件:
#include <iostream>
#include <map>
2.创建map:
map<string, int> myMap; // 创建一个从字符串到整数的映射
3.添加键值对:
insert(pair<Key, Value>(key, value)):向映射中插入键-值对
//使用make_pair将参数变成键值对类型
myMap.insert(make_pair("c1",v1) );
myMap.insert(make_pair("c2", v2));
myMap.insert(make_pair("c3", v3));
//或者直接使用花括号
myMap.insert({"c4",v4});
4.查找键值对:
find(key):查找映射中是否存在特定键,返回迭代器。count(key):统计特定键在映射中的出现次数(对于std::map,要么是0,要么是1)。
// 5.查找键值对
int times = myMap.count("c2");
if (times == 1) {
cout << "存在班级c2" << endl;
} else {
cout << "不存在班级c2" << endl;
}
//找出班级c3的所有学生
map<string, vector<string>>::iterator it;
it = myMap.find("c3");
if(it != myMap.end()) {
cout << "班级c2的学生: ";
for (string stu : it->second) {
cout << stu << " ";
}
}
5.遍历键-值对:
- 使用迭代器可以遍历整个映射
void printMap1(map<string, vector<string>>& myMap) {
map<string, vector<string>>::iterator it;
for (it = myMap.begin(); it != myMap.end();it++) {
cout << "班级: " << it->first << " 学生:";
for (const string& stuName : it->second)
{
cout << stuName << ", ";
}
cout << endl;
}
}
5.综合示例:班级学生
#include <iostream>
#include <set>
#include <string>
#include <map>#include <vector>
using namespace std;
//输出每个班级的人
void printMap(map<string, vector<string>>& myMap) {
for (const auto& pair : myMap) {
cout << "班级: " << pair.first << " 学生:";
for (const auto& stuName : pair.second)
{
cout << stuName << ", ";
}
cout << endl;
}
}
void printMap1(map<string, vector<string>>& myMap) {
map<string, vector<string>>::iterator it;
for (it = myMap.begin(); it != myMap.end();it++) {
cout << "班级: " << it->first << " 学生:";
for (const string& stuName : it->second)
{
cout << stuName << ", ";
}
cout << endl;
}
}
int main() {
// 使用map存储班级-学生信息,班级是key,学生信息是value,一个字符串数组
// 1.创建map
map<string, vector<string>> myMap;
// 2.准备数据
vector<string> v1 = {"张三","李四","王五"};
vector<string> v2 = {"李寻欢","二郎神","游所为"};
vector<string> v3 = {"郭靖","杨过","黄蓉"};
vector<string> v4 = {"jack","Tom","Lina"};
// 3.给map添加元素的两种办法:
//在 map 中,键值对的插入语法应该使用 make_pair 或者花括号 {}
myMap.insert(make_pair("c1",v1) );
myMap.insert(make_pair("c2", v2));
myMap.insert(make_pair("c3", v3));
myMap.insert({"c4",v4});
//输出每个班级的人
printMap(myMap);
// 4.删除指定键值对
myMap.erase("c4");
printMap1(myMap);
// 5.查找键值对
int times = myMap.count("c2");
if (times == 1) {
cout << "存在班级c2" << endl;
} else {
cout << "不存在班级c2" << endl;
}
//找出班级c3的所有学生
map<string, vector<string>>::iterator it;
it = myMap.find("c3");
if(it != myMap.end()) {
cout << "班级c2的学生: ";
for (string stu : it->second) {
cout << stu << " ";
}
}
return 0;
}
相关阅读
-
服务器故障排查 服务器常见故障及其解决方法
下面为网友们详细介绍服务器故障排查的教程内容,具体内容如下: 随着信息技术的不断发展,服务器作为信息存储和数据传输的主要设备,已经成为了各类系统运作的核心组成部分。然而,
-
数据库的功能特点 讲述数据库管理系统基本功能
今天小编详解数据库的功能特点和讲述数据库管理系统基本功能的相关话题,请看下面详细的介绍。 数据库管理系统 DBMS (Database Management System)主要实现共享数据有效地组织、管理和存取,
-
网络管理知识:DHCP释放地址命令详解
一篇方法教程,与您分享网络管理知识方面的讲解,一起来了解了解吧。 DHCP(动态主机配置协议)在网络管理中起着重要的作用,主要用于动态分配IP地址。 当你的设备不再需要DHCP服务提供
-
OSPF数据包交换基本流程 OSPF数据包传输流程
为大家介绍OSPF数据包交换基本流程的相关知识,继续往下看吧! 在OSPF网络中,路由器之间通过数据包来交换路由信息。 下面是OSPF数据包交换的基本流程: Hello 数据包交换 : 路由器周期性地


