• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
FightingForWorldFinal
博客园    首页    新随笔    联系   管理    订阅  订阅

HDUOJ2648 容器的使用之map

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <cmath>
 5 #include <cstdlib>
 6 #include <algorithm>
 7 #include <vector>
 8 #include <stack>
 9 #include <queue>
10 #include <cassert>
11 #include <set>
12 #include <sstream>
13 #include <map>
14 using namespace std ;
15 #ifdef DeBUG
16 #define bug assert
17 #else
18 #define bug //
19 #endif
20 #define zero {0}
21 struct shop
22 {
23     string name;
24     int price;
25 };
26     map<string,int>a;
27     map<string,int>::iterator it;
28 int main()
29 {
30     #ifdef DeBUG
31         freopen("C:\\Users\\Sky\\Desktop\\1.in","r",stdin);
32     #endif
33     
34     string m;
35     int price;
36     int n;
37     int t;
38     int d;
39     int sum=0;
40     int rank=1;
41     int i,j,k;
42     char mm[40];
43     while(scanf("%d",&n)!=EOF)
44     {
45         for(i=0;i<n;i++)
46         {
47                 scanf("%s",mm);
48                 a[mm]=0;
49         }
50             scanf("%d",&t);
51             for(i=0;i<t;i++)
52             {
53                 for(j=0;j<n;j++)
54                 {
55                     scanf("%d%s",&d,mm);
56                     a[mm]+=d;
57                     if(strcmp(mm,"memory")==0)
58                     {
59                         sum=a[mm];
60                     }
61                 }
62                 for(it=a.begin();it!=a.end();it++)
63                 {
64                     if(it->second>sum)
65                     rank++;
66                 }
67                 printf("%d\n",rank);
68                 rank=1;
69             }
70             a.clear();
71     }
72     return 0;
73 }
View Code

  

一、map的说明
  1   头文件 
  #include   <map> 
  
  2   定义 
  map<string,   int>   my_Map; 
  或者是typedef     map<string,   int>   MY_MAP; 
  MY_MAP   my_Map; 
  
  3   插入数据 
  (1)   my_Map["a"]   =   1; //a也会插入其中
  (2)   my_Map.insert(map<string,   int>::value_type("b",2)); 
  (3)   my_Map.insert(pair<string,int>("c",3)); 
  (4)   my_Map.insert(make_pair<string,int>("d",4)); 
  
  4   查找数据和修改数据 
  (1)   int   i   =   my_Map["a"]; 
            my_Map["a"]   =   i; 
  (2)   MY_MAP::iterator   my_Itr; 
            my_Itr.find("b"); 
            int   j   =   my_Itr->second; 
            my_Itr->second   =   j; 
  不过注意,键本身是不能被修改的,除非删除。 
  
  5   删除数据 
  (1)   my_Map.erase(my_Itr); 
  (2)   my_Map.erase("c"); 
  还是注意,第一种情况在迭代期间是不能被删除的,道理和foreach时不能删除元素一样。 
  
  6   迭代数据 
  for   (my_Itr=my_Map.begin();   my_Itr!=my_Map.end();   ++my_Itr)   {} 
  
  7   其它方法 
  my_Map.size()               返回元素数目 
  my_Map.empty()       判断是否为空 
  my_Map.clear()           清空所有元素

posted @ 2013-07-16 20:25  Sky-J  阅读(264)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3