zoukankan      html  css  js  c++  java
  • 关于map和hashmap

    今天做的程序猿那题

    在公司里面,程序猿经常有一堆todolist要做,而这些todolist是产品经理分配给他们的。但是当程序员遇到不懂技术的产品狗时,就悲剧了。产品经理经常修改他们的todolist,比如:添加,减少他们的todolist。
    请设计一个类CodeMonkey ,表示程序猿,另一个类ProductDog,表示产品经理。

    • CodeMonkey类有私有成员 name,todolist。构造函数初始化姓名和todolist,公有函数 int sizeof_todolist(), 来自ProductDog类的友元函数 add_todolist(CodeMonkey&,int),reduce_todolist(CodeMonkey& , int);
    • ProductDog类有公有函数 add_todolist(CodeMonkey&,int),reduce_todolist(CodeMonkey& , int)

    Input Specification

    每个测试文件包含一组测试用例,对于每个测试用例,第一行输入 n (1<= n <= 10^6)表示有n个程序员,接下去n行,每行为: name x 表示名为name的程序员的todolist的长度为x。 接下去一行 m (1<=m<=10^6),表示产品经理分配任务的次数。 接下去m行,每行为 name opt x , opt 为 0 表示名为name的程序猿的todolist增加x,opt为 1 表示减少x。 输入数据保证合法性。

    Output Specification

    对于每个程序员,请输出 name x,x表示最终的todolist长度。按输入顺序输出。

    Sample Input:
    3
    Jack 1
    Luck 2
    Tom  3
    4
    Tom   0 100
    Luck  0 50
    Jack  0 25
    Tom   1 50
    
    Sample Output:
    Jack  26
    Luck  52
    Tom   53
    #include <iostream>
    #include <string>
    #include <map>
    
    using namespace std;
    //#define N 101
    //class CodeMonkey;  //注意要先声明
    //class ProductDog{
    //public:
    //	void add_todolist(CodeMonkey&,int);
    //	void reduce_todolist(CodeMonkey& , int);
    //};
    //
    //class CodeMonkey{
    //private:
    //
    //	string name;
    //	int todolist;
    //
    //public:
    //	map<string,int> mymap;
    //	CodeMonkey(){name="a",todolist=0;}
    //	string getName(){
    //		return name;
    //	}
    //	int getTodo(){
    //		return todolist;
    //	}
    //	 int sizeof_todolist();
    //	 friend void ProductDog::add_todolist(CodeMonkey&,int);
    //	 friend void ProductDog::reduce_todolist(CodeMonkey& , int);
    //	 void setName(string s){
    //		 name=s;
    //	 }
    //	 void setTodolist(int s){
    //		 todolist=s;
    //		 }
    //};
    //void ProductDog::add_todolist(CodeMonkey &monkey,int change)
    //{
    //	int s=monkey.getTodo();
    //	monkey.setTodolist(s+change);
    //}
    //void ProductDog::reduce_todolist(CodeMonkey &monkey,int change)
    //{
    //	int s=monkey.getTodo();
    //	monkey.setTodolist(s-change);
    //}
    
    int main() {
    
    //	ProductDog dog;
    	int n,m;
    ////	CodeMonkey coder;
    	map<string,int>mymap;
    	string aname[100000];
    	//hash_map<string,int> myhacs_map;
    	string name;
    	int todo;
    		cin>>n;
    		typedef pair<string,int> my_pair;
    		for(int i=0;i<n;i++){
    			cin>>name>>todo;
    			aname[i]=name;
    		mymap.insert(my_pair(name,todo));
    
    		}
    
    cin>>m;
    string myname;
    int judge,change;
    while(m--){
    	cin>>myname;
    
    	cin>>judge>>change;
    	if(judge==0){
    		mymap.find(myname)->second+=change;
    	}
    	else if(judge==1){
    		mymap.find(myname)->second-=change;
    	}
    }
    
              for(int i=0;i<n;i++){
            	  string ss=mymap.find(aname[i])->first;
            	  int dd=mymap.find(aname[i])->second;
                      	 cout<<ss<<" "<<dd<<endl;
                       }
    
    	return 0;
    }

    主体先用string数组存 题目要求按插入顺序输出

    有人说可以采用<string,int,cmp>通过改变cmp的算法去让map按原来序列输出,这是不可取的,这样会破坏map的find的函数

    总的来说,如果想find 就别想不排序 通过平衡二叉树实现的要排序

    以上纯属个人看法,欢迎讨论~

    原帖: http://blog.csdn.net/u011644423

    版权声明:本文为博主原创文章,未经博主允许不得转载。

    today lazy . tomorrow die .
  • 相关阅读:
    Java for循环打印九九乘法表
    java判断回文数代码实例
    java 判断回文数实例代码
    价值
    Java代码实例 判断这个数是否是素数
    Java for循环求水花仙数
    java代码实例 使用switch实现简易的计算器(实现加减乘除)
    java基础代码实例 求1100之间的奇数和偶数
    Java 判断闰年代码实例
    可以将控制台输出信息保存到本地的Log4j配置
  • 原文地址:https://www.cnblogs.com/france/p/4808784.html
Copyright © 2011-2022 走看看