草庐IT

C++进阶实例2--员工分组

LYH-win 2023-03-28 原文

C++进阶实例2--员工分组

  1 #include<iostream>
  2 #include<map>
  3 #include<vector>
  4 #include<ctime>
  5 using namespace std;
  6 
  7 #define CEHUA 0
  8 #define MEISHU 1
  9 #define YANFA 2
 10 
 11 // 员工分组
 12 // 
 13 // 案例描述:
 14 //    1. 10名员工(ABCDEFGHIJ)
 15 //    2. 员工信息:姓名,薪资组成;部门:策划、没熟、研发
 16 //    3. 随机给10名员工分配部门和薪资
 17 //    4. 通过multimap进行信息的插入,key(部门编号),value(员工)
 18 //    5. 分部门显示员工信息
 19 // 
 20 // 解决思路:
 21 //    1. 创建10名员工,存入vector
 22 //    2. 遍历vector容器,取出每个员工,进行随机分组
 23 //    3. 分组后,将员工编号作为key,具体员工为value,存放到multimap容器中
 24 //    4. 分部门显示员工信息
 25 //  
 26 
 27 // 创建员工
 28 class Worker
 29 {
 30 public:
 31     string m_Name;
 32     int m_Salary;
 33 };
 34 
 35 void createWorker(vector<Worker>& v) {
 36 
 37     string nameSeed = "ABCDEFGHIJ";
 38     for (int i = 0; i < 10; i++) {
 39         Worker worker;
 40         worker.m_Name = "员工";
 41         worker.m_Name += nameSeed[i];
 42 
 43         worker.m_Salary = rand() % 10000 + 10000;  // 10000 ~ 19999;
 44 
 45         v.push_back(worker);
 46     }
 47 
 48 }
 49 
 50 // 员工分组
 51 void setGroup(vector<Worker>& v, multimap<int, Worker>& m) {
 52     for (vector<Worker>::iterator it = v.begin(); it != v.end(); it++) {
 53         // 产生随机部门编号
 54         int depId = rand() % 3;  // 0, 1, 2
 55 
 56         // 将员工插入到分组中
 57         // key表示部门编号,value表示具体员工
 58         m.insert(make_pair(depId, *it));
 59     }
 60 }
 61 
 62 // 分组显式
 63 void showWorkerByGroup(multimap<int, Worker>&m) {
 64 
 65     cout << "策划部们:" << endl;
 66     multimap<int, Worker>::iterator pos = m.find(CEHUA);
 67     int count = m.count(CEHUA);  // 统计具体人数
 68     int index = 0;
 69     for (; pos != m.end() && index < count; pos++, index++) {
 70         cout << "姓名:" << pos->second.m_Name << " 薪资:" << pos->second.m_Salary << endl;
 71     }
 72 
 73     cout << "-----------------------" << endl;
 74     cout << "美术部门:" << endl;
 75     pos = m.find(MEISHU);
 76     count = m.count(MEISHU);  // 统计具体人数
 77     index = 0;
 78     for (; pos != m.end() && index < count; pos++, index++) {
 79         cout << "姓名:" << pos->second.m_Name << " 薪资:" << pos->second.m_Salary << endl;
 80     }
 81 
 82     cout << "-----------------------" << endl;
 83     cout << "研发部门:" << endl;
 84     pos = m.find(YANFA);
 85     count = m.count(YANFA);  // 统计具体人数
 86     index = 0;
 87     for (; pos != m.end() && index < count; pos++, index++) {
 88         cout << "姓名:" << pos->second.m_Name << " 薪资:" << pos->second.m_Salary << endl;
 89     }
 90 }
 91 
 92 void test01() {
 93 
 94     // 随机数
 95     srand((unsigned int)time(NULL));
 96 
 97     // 1.创建员工
 98     vector<Worker>vWorker;
 99     createWorker(vWorker);
100 
101     // 测试员工信息
102     //for (vector<Worker>::iterator it = vWorker.begin(); it != vWorker.end(); it++) {
103     //    cout << "姓名:" << it->m_Name << " 工资:" << it->m_Salary << endl;
104     //}
105 
106     // 2.员工分组
107     multimap<int, Worker>mWorker;
108     setGroup(vWorker, mWorker);
109 
110     // 3.分组显式员工
111     showWorkerByGroup(mWorker);
112 }
113 
114 int main() {
115 
116     test01();
117 
118     system("pause");
119 
120     return 0;
121 }

 

有关C++进阶实例2--员工分组的更多相关文章

  1. ruby-on-rails - 按天对 Mongoid 对象进行分组 - 2

    在控制台中反复尝试之后,我想到了这种方法,可以按发生日期对类似activerecord的(Mongoid)对象进行分组。我不确定这是完成此任务的最佳方法,但它确实有效。有没有人有更好的建议,或者这是一个很好的方法?#eventsisanarrayofactiverecord-likeobjectsthatincludeatimeattributeevents.map{|event|#converteventsarrayintoanarrayofhasheswiththedayofthemonthandtheevent{:number=>event.time.day,:event=>ev

  2. ruby-on-rails - 如何使用 instance_variable_set 正确设置实例变量? - 2

    我正在查看instance_variable_set的文档并看到给出的示例代码是这样做的:obj.instance_variable_set(:@instnc_var,"valuefortheinstancevariable")然后允许您在类的任何实例方法中以@instnc_var的形式访问该变量。我想知道为什么在@instnc_var之前需要一个冒号:。冒号有什么作用? 最佳答案 我的第一直觉是告诉你不要使用instance_variable_set除非你真的知道你用它做什么。它本质上是一种元编程工具或绕过实例变量可见性的黑客攻击

  3. ruby 正则表达式 - 如何替换字符串中匹配项的第 n 个实例 - 2

    在我的应用程序中,我需要能够找到所有数字子字符串,然后扫描每个子字符串,找到第一个匹配范围(例如5到15之间)的子字符串,并将该实例替换为另一个字符串“X”。我的测试字符串s="1foo100bar10gee1"我的初始模式是1个或多个数字的任何字符串,例如,re=Regexp.new(/\d+/)matches=s.scan(re)给出["1","100","10","1"]如果我想用“X”替换第N个匹配项,并且只替换第N个匹配项,我该怎么做?例如,如果我想替换第三个匹配项“10”(匹配项[2]),我不能只说s[matches[2]]="X"因为它做了两次替换“1fooX0barXg

  4. ruby-on-rails - Rails - 从另一个模型中创建一个模型的实例 - 2

    我有一个正在构建的应用程序,我需要一个模型来创建另一个模型的实例。我希望每辆车都有4个轮胎。汽车模型classCar轮胎模型classTire但是,在make_tires内部有一个错误,如果我为Tire尝试它,则没有用于创建或新建的activerecord方法。当我检查轮胎时,它没有这些方法。我该如何补救?错误是这样的:未定义的方法'create'forActiveRecord::AttributeMethods::Serialization::Tire::Module我测试了两个环境:测试和开发,它们都因相同的错误而失败。 最佳答案

  5. ruby-on-rails - RSpec:避免使用允许接收的任何实例 - 2

    我正在处理旧代码的一部分。beforedoallow_any_instance_of(SportRateManager).toreceive(:create).and_return(true)endRubocop错误如下:Avoidstubbingusing'allow_any_instance_of'我读到了RuboCop::RSpec:AnyInstance我试着像下面那样改变它。由此beforedoallow_any_instance_of(SportRateManager).toreceive(:create).and_return(true)end对此:let(:sport_

  6. ruby-on-rails - 使用 ruby​​ 将多个实例变量转换为散列的更好方法? - 2

    我收到格式为的回复#我需要将其转换为哈希值(针对活跃商家)。目前我正在遍历变量并执行此操作:response.instance_variables.eachdo|r|my_hash.merge!(r.to_s.delete("@").intern=>response.instance_eval(r.to_s.delete("@")))end这有效,它将生成{:first="charlie",:last=>"kelly"},但它似乎有点hacky和不稳定。有更好的方法吗?编辑:我刚刚意识到我可以使用instance_variable_get作为该等式的第二部分,但这仍然是主要问题。

  7. ruby - 在 Ruby 中创建按公共(public)键值分组的新哈希 - 2

    假设我有一个在Ruby中看起来像这样的哈希:{:ie0=>"Hi",:ex0=>"Hey",:eg0=>"Howdy",:ie1=>"Hello",:ex1=>"Greetings",:eg1=>"Goodday"}有什么好的方法可以将它变成如下内容:{"0"=>{"ie"=>"Hi","ex"=>"Hey","eg"=>"Howdy"},"1"=>{"ie"=>"Hello","ex"=>"Greetings","eg"=>"Goodday"}} 最佳答案 您要求一个好的方法来做到这一点,所以答案是:一种您或同事可以在六个月后理解

  8. ruby - 为什么当我调用类的实例方法时,初始化不显示为方法? - 2

    我正在写一篇关于在Ruby中几乎一切都是对象的博客文章,我试图通过以下示例来展示这一点:classCoolBeansattr_accessor:beansdefinitialize@bean=[]enddefcount_beans@beans.countendend所以从类中我们可以看出它有4个方法(当然,除非我错了):它可以在创建新实例时初始化一个默认的空bean数组它可以计算它有多少个bean它可以读取它有多少个bean(通过attr_accessor)它可以向空数组写入(或添加)更多bean(也通过attr_accessor)但是,当我询问类本身它有哪些实例方法时,我没有看到默认

  9. ruby - 在 Ruby 中,在类方法的上下文中,什么是实例变量和类变量? - 2

    如果我有以下一段Ruby代码:classBlahdefself.bleh@blih="Hello"@@bloh="World"endend@blih和@@bloh到底是什么?@blih是Blah类中的一个实例变量,@@bloh是Blah类中的一个类变量,对吗?这是否意味着@@bloh是Blah的类Class中的一个变量? 最佳答案 人们似乎忽略了该方法是类方法。@blih将是常量Bleh的类Class实例的实例变量。因此:irb(main):001:0>classBlehirb(main):002:1>defself.blehirb

  10. ruby - 从外部访问类的实例变量 - 2

    我理解(我认为)Ruby中类变量和类的实例变量之间的区别。我想知道如何从该类外部访问该类的实例变量。从内部(即在类方法中而不是实例方法中),它可以直接访问,但是从外部,有没有办法做MyClass.class.[@$#]variablename?我没有任何具体原因要这样做,只是学习Ruby并想知道是否可行。 最佳答案 classMyClass@my_class_instance_var="foo"class上述yield:>>foo我相信Arkku演示了如何从类外部访问类变量(@@),而不是类实例变量(@)。我从这篇文章中提取了上述内

随机推荐