map及匹配

用map完成下面的题目

要求 假设有如下国家和国家国土面积:'Russia': 1707.5, 'Canada': 997.1, 'China': 960.1 ,按照国土面积的升序输出Russia、Canada、China三个国家和对应的国土面积。

1>定义map

2>输出各个国家的名字  (Russia、Canada、China)

3>输出各个国家的国土面积(1707.5、997.1、960.1)

4>输出国家及对应的面积('Russia': 1707.5, 'Canada': 997.1, 'China': 960.1)

5>按国土面积的升序输出国家及对应的面积.

输出形式: 国家:China  面积:960.1 国家Canada  面积:997.1 国家Russia  面积:1707.5

import scala.collection.immutable.ListMap
val map1=Map("Russia"->1707.5,"Canada"->997.1,"China"->960.1)
for(key<-map1.keys){print(key+" ")}
println()
for(value<-map1.values)
print(value+" ")
println()
val mj= ListMap(map1.toSeq.sortBy(_._2):_*)
for((k,v)<-mj){
print("国家:"+k+" 面积:"+v)}

运行结果:

### 关于C++ `std::map` 的基本用法 在C++标准库中,`std::map` 是一种关联容器,用于存储键值对(key-value pairs)。它通过红黑树实现,因此具有自动排序功能,并支持高效的查找操作。以下是关于 `std::map` 的一些核心概念及其常见用途: #### 创建和初始化 `std::map` 可以通过多种方式创建并初始化一个 `std::map` 容器。例如: ```cpp #include <iostream> #include <map> int main() { std::map<int, std::string> myMap; // 插入元素的方式一:使用 insert 方法 myMap.insert(std::make_pair(1, "Apple")); // 插入元素的方式二:使用下标运算符 [] myMap[2] = "Banana"; // 遍历 map 中的所有元素 for (const auto& pair : myMap) { std::cout << pair.first << ": " << pair.second << "\n"; } } ``` 上述代码展示了如何向 `std::map` 添加数据以及遍历其内容[^3]。 #### 查找特定键对应的值 可以利用迭代器或者成员函数来定位某个键是否存在以及获取相应的值。 ```cpp if (myMap.find(1) != myMap.end()) { std::cout << "Key 1 exists with value: " << myMap[1] << "\n"; } else { std::cout << "Key 1 does not exist\n"; } ``` 这里采用了 `find()` 函数判断指定的 key 是否存在;如果不存在,则返回 end 迭代器[^4]。 #### 删除元素 删除单个元素可通过 erase(key),而清除整个集合则调用 clear() 即可完成。 ```cpp // 移除键为 '2' 的条目 myMap.erase(2); // 清空所有项 myMap.clear(); ``` #### 解决与 Map 相关的匹配问题实例 假设我们需要找到两个字符串列表之间的共同单词数量,这可以用到 maps 来统计频率再比较两者交集大小的例子如下所示: ```cpp #include <vector> #include <unordered_map> using namespace std; int commonWordsCount(vector<string>& words1, vector<string>& words2){ unordered_map<string,int> freqs; int count=0; for(auto &w:words1){freqs[w]+=1;} for(auto &w:words2){ if(freqs[w]>0 && --freqs[w]==0 )count++; }return count; } ``` 此程序片段定义了一个辅助方法用来计算两组词中共有的唯一词语数目[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值