map对象建立家族姓氏查询

简介: 题目:定义一个map对象,其元素的键是家族姓氏,而值是存储该家族孩子名字的vector对象。为这个map容器输入至少六个条目。通过基于家族姓氏的查询检测你的程序,查询应输出该家族所有孩子的名字。   1 //定义一个map对象,其元素的键是家族姓氏 2 //而值则是存储该家族孩子名字的...

题目:定义一个map对象,其元素的键是家族姓氏,而值是存储该家族孩子名字的vector对象。为这个map容器输入至少六个条目。通过基于家族姓氏的查询检测你的程序,查询应输出该家族所有孩子的名字。

 

 1 //定义一个map对象,其元素的键是家族姓氏
 2 //而值则是存储该家族孩子名字的vector对象
 3 //进行基于家族姓氏的查询,输出该家族所有孩子的名字
 4 #include<iostream>
 5 #include<map>
 6 #include<vector>
 7 #include<string>
 8 using namespace std;
 9 
10 int main()
11 {
12     map<string , vector<string> > children;
13     string surname , childName;
14 
15     //读入条目(家族姓氏及其所有孩子的名字)
16     do{
17         cout<<"Enter surname: "<<endl;
18         cin>>surname;
19         if(!cin)  //读入结束
20             break;
21         //插入新条目
22         vector<string> chd;
23         pair<map<string , vector<string> >::iterator , bool> ret = children.insert(make_pair(surname , chd));
24 
25         if(!ret.second){//该家族姓氏已在map容器中存在
26             cout<<"repeated surname: "<<surname<<endl;
27             continue;
28         }
29 
30         cout<<"Enter children's name: "<<endl;
31         while(cin>>childName)//读入该家族所有孩子的名字
32             ret.first->second.push_back(childName);
33         cin.clear(); //使输入流重新有效    
34     }while(cin);
35 
36     cin.clear(); //使输入流重新有效
37 
38     //读入要查询的家族
39     cout<<"Enter a surname to search: "<<endl;
40     cin>>surname;
41 
42     //根据读入的家族姓氏进行查找
43     map<string , vector<string> >::iterator iter = children.find(surname);
44 
45     //输出查询结果
46     if(iter == children.end()) //找不到该家族姓氏
47         cout<<"no this surname: "<<surname<<endl;
48     else
49     {
50         cout<<"children: "<<endl;
51         //输出该家族中所有孩子的名字
52         vector<string>::iterator it = iter->second.begin();
53         while(it != iter->second.end())
54             cout<<*it++<<endl;
55     }
56 
57     return 0;
58 }

 

 

 

img_e00999465d1c2c1b02df587a3ec9c13d.jpg
微信公众号: 猿人谷
如果您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】
如果您希望与我交流互动,欢迎关注微信公众号
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

目录
相关文章
|
2月前
|
存储 JavaScript 索引
js开发:请解释什么是ES6的Map和Set,以及它们与普通对象和数组的区别。
ES6引入了Map和Set数据结构。Map的键可以是任意类型且有序,与对象的字符串或符号键不同;Set存储唯一值,无重复。两者皆可迭代,支持for...of循环。Map有get、set、has、delete等方法,Set有add、delete、has方法。示例展示了Map和Set的基本操作。
40 3
|
2月前
|
存储 Java
map中存储的是引用,而不是对象本身
该内容是关于Java编程中验证Map存储引用而非复制对象的示例。创建大型List导致内存增加,说明List确实占用空间。通过Person类示例,将不同对象放入Map,改变一个对象的属性后,比较原对象与Map中的键值对,发现两者相等,证明Map保存的是对象引用。
37 5
|
2月前
|
数据处理
利用Stream流将取到的对象List<对象>形式数据进行分组统计转变成Map<分组条件,数量统计>形式
利用Stream流将取到的对象List<对象>形式数据进行分组统计转变成Map<分组条件,数量统计>形式
31 0
|
23天前
|
存储 分布式计算 DataWorks
MaxCompute产品使用合集之要存储用户的下单所有产品,然后查询时要进行产品分组的,一般这种字段要使用ARRAY还是MAP
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
28天前
|
Java
Java list中的对象转为list,list中的对象转为map
Java list中的对象转为list,list中的对象转为map
17 1
|
13天前
|
安全 Java
如何测试map对象的线程不安全
【6月更文挑战第20天】如何测试map对象的线程不安全
14 0
|
2月前
|
Java
SpringBoot 项目启动初始化一个Map对象到内存
SpringBoot 项目启动初始化一个Map对象到内存
|
2月前
|
JavaScript
js Array map映射对象多个属性
js Array map映射对象多个属性
18 0
|
2月前
|
存储 JavaScript 索引
js开发:请解释什么是ES6的Map和Set,以及它们与普通对象和数组的区别。
ES6引入了Map和Set数据结构。Map的键可为任意类型,有序且支持get、set、has、delete操作;Set存储唯一值,提供add、delete、has方法。两者皆可迭代。示例展示了Map和Set的基本用法,如添加、查询、删除元素。
20 2
|
2月前
|
Java
java8 转对象,Java8转Map,Java8转Llist
java8 转对象,Java8转Map,Java8转Llist
24 0