網站首頁 編程語言 正文
map
有N個學生的姓名name和學號ID,要求給你一個學生的name求查找他的ID。
簡單做法是定義 string name [ N ]
和 int ID[ N ]
存儲信息,然后在name [ ] 中查找這個學生,找到后輸出他的ID。但是這樣的缺點是需要查找所有的name [ N ],時間復雜度是O( N ),效率低下。
利用 STL 中 map容器 可以快速實現查找,復雜度是O( log 2 N )。
map是關聯容器,它實現從鍵(key)到值(value)得的映射。map效率高的原因是它利用平衡二叉搜索樹來存儲和訪問。
一般的數組也是用映射方法實現的。
int a[ 100 ]
,是定義了從int型到int型的映射,比如 a[ 4 ]=36就分別是將 4 映射到 36
double b[ 100 ]
,是定義了從int型到int型的映射,比如 b[ 5 ]=0.009 就分別是將 5 映射到 0.009
map具體操作
( 1 ) 定義:例如 map<string , int> 代表從字符串映射到數字,還含有多種映射。(注意,字符串到整型的映射,必須是string而不是char)
( 2 ) 賦值:例如 a[ “TOM” ]=15,這里把 “TOM” 當成普通數組下標來使用。
( 3 ) 查找:可以直接使用 a[ “TOM” ]表示,不必要搜索所有的值。
注意map是C++的函數,必須使用C++頭文件。例題 POJ 2153
#include<iostream> #include<cstring> #include<map>//map函數頭文件 using namespace std; map<string ,int> x;//定義從string映射到int char s[10010][50]; char b[50],c[50]="Li Ming"; int main() { int m,n,i,j,num,sum,sort; scanf("%d",&n); getchar(); for(i=1;i<=n;i++) { gets(s[i]); x[s[i]]=0;//將s[i]當做是普通數組下標使用 } scanf("%d",&m); while(m--) { sort=1; for(i=1;i<=n;i++) { scanf("%d",&num); getchar(); gets(s[j]); x[s[j]]+=num;//成績相加 } for(i=1;i<=n;i++) if(strcmp(c,s[i])==0) sum=x[s[i]];//刷新"Li Ming"的分數 for(i=1;i<=n;i++) if(x[s[i]]>sum) sort++;//求"Li Ming"的名次 printf("%d\n",sort); } return 0; }
總結
原文鏈接:https://blog.csdn.net/weixin_54793960/article/details/122280831
- 上一篇:C++運算符重載限制介紹_C 語言
- 下一篇:C語言字符串函數入門_C 語言
相關推薦
- 2022-08-17 React大屏可視化腳手架教程示例_React
- 2022-07-09 Harbor鏡像倉庫搭建
- 2022-07-11 docker給正在運行中的容器添加映射端口
- 2023-12-02 富文本組件中圖片間空白處理小技巧
- 2023-04-29 Git中使用.gitignore忽略文件的推送方式_相關技巧
- 2022-09-12 shell腳本5種執行方式及腳本不同的執行方法和區別詳解_linux shell
- 2022-06-13 基于Python?matplotlib庫繪制箱線圖_python
- 2022-08-02 Shell判斷字符串變量是否為空的方法實現_linux shell
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支