对于这个小项目,有两个只是盲区
1、定义了一个自定义数据类型的类之后,在后面创建的时候,自定义数据类型必须要有默认构造函数,如果在自定义的类里面定义了有参构造,就要自己定义一个默认构造函数。
2、自定义map容器等容器的排序的时候,传进来的参数被系统默认以const类型的形式传进来的,所以在重载operator()的时候,也需要定义为const的类型。要不然会出错。因为operator()类型会修改形参的内容,而形参的内容是const类型的,所以必须定义operator()也要是const类型的。

hpp文件

#pragma once
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <map>
#include <ctime>
#include <numeric>
#include <list>using namespace std;class Compare
{public:bool operator()(int v1, int v2) const {return v1 > v2;}
};
class Person
{public:Person() {}Person(string Name,int Code){this->m_Name = Name;this->m_Code = Code;}string m_Name;int m_Code;
};
vector<Person> RandomVector(vector<Person>& v)
{random_shuffle(v.begin(), v.end());return v;
}
vector<Person> SetPerson()
{vector<Person> v;string Order = "ABCDEFGHIJKLMNOP";int Code = 0;for (int i = 0; i < 12; i++){string Name = "选手";Name += Order[i];Person p = { Name, Code };v.push_back(p);Code++;}return v;
}
vector<Person> GetGroup1(vector<Person>& v)
{vector<Person>::iterator i = v.begin(); for (int j = 0; j < 6; j++){i++;}vector<Person> v1;v1.resize(6);copy(v.begin(), i, v1.begin());return v1;
}vector<Person> GetGroup2(vector<Person>& v)
{vector<Person>::iterator i = v.begin();for (int j = 0; j < 6; j++){i++;}vector<Person> v2;v2.resize(6);copy(i, v.end(), v2.begin());return v2;
}void SetMap(vector<Person>& v)
{multimap<int, Person,Compare> m;list<int> L;for (int i = 0; i < 6; i++){for (int j = 0; j < 10; j++){int Code = rand() % 11;L.push_back(Code);}int Sum = accumulate(++L.begin(), --L.end(),0);m.insert(make_pair(Sum, v[i]));}for (multimap<int, Person,Compare>::iterator i = m.begin(); i != m.end(); i++){cout << i->second.m_Name << " " << i->second.m_Code << " " << i->first << endl;}
}void ShowPerson( vector<Person> &v)
{for (vector<Person>::iterator i = v.begin(); i != v.end(); i++){cout << "姓名:" << i->m_Name << "编号:" << i->m_Code << endl;}
}

cpp文件

#include "演讲比赛.hpp"int main()
{srand((unsigned int)time(NULL));vector<Person> v = SetPerson();vector<Person> v1 = RandomVector(v);vector<Person> v2 = GetGroup1(v1);vector<Person> v3 = GetGroup2(v);SetMap(v2);SetMap(v3);//ShowPerson(v2);//ShowPerson(v3);return 0;
}

C++实现演讲比赛小项目相关推荐

  1. c++小项目:基于STL的演讲比赛流程管理系统

    一.项目目的 运用c++实现一个基于STL的演讲比赛流程管理系统. 比赛方式 共两轮,第一轮为分组淘汰赛,第二轮为决赛,共有十名评委,打分方式为去掉最高分和最低分的平均分为基准 第一轮共两组,每组六人 ...

  2. C++项目之演讲比赛模拟

    演讲系统(SpeechContext)小结 前记 最近把C++ 的知识点过了一遍,虽然说不能完全的了解C++语言的特性,但是也发现了它的美,后面想要学习C++的热情高涨,故完成了一个小项目,来达到温故 ...

  3. c++项目-----演讲比赛--附详细过程

    最近在学c++就跟着b站up主黑马程序员写了一个演讲比赛的小项目,不得不说,确实很复杂,不过很锻炼你对c++知识点的熟练程度,做完还是很有成就感的 下面是需求和代码,感兴趣的同学也可以自己动手操作一下 ...

  4. C++项目实战 —— 演讲比赛流程管理系统

    演讲比赛流程管理系统 文章目录 演讲比赛流程管理系统 1.演讲比赛程序需求 1.1 比赛规则 1.2 程序功能 2.项目创建 3.创建管理类 3.1 创建文件 3.2 头文件实现 3.3 源文件实现 ...

  5. 【49C++项目案例:演讲比赛流程管理系统】

    文章目录 演讲比赛流程管理系统 1.演讲比赛程序需求 1.1 比赛规则 1.2 程序功能 1.3 程序效果图 2.项目创建 2.1 创建项目 2.2 添加文件 3.创建管理类 3.1 创建文件 3.2 ...

  6. [carla入门教程]-6 小项目:基于carla-ros-bridge构建一个小型比赛赛道

    本专栏教程将记录从安装carla到调用carla的pythonAPI进行车辆操控并采集数据的全流程,带领大家从安装carla开始,到最终能够熟练使用carla仿真环境进行传感器数据采集和车辆控制. 第 ...

  7. c语言为什么要建项目,一个C语言小项目为什么都说牛逼

    原标题:一个C语言小项目为什么都说牛逼 意在鼓励C语言学者.更有兴趣,学习更富有创业和乐趣! 推荐加学习交流群:658807522 可以在一起学习交流,既是参赛选手,又是学者,也可以先学习再参赛,反正 ...

  8. 病例演讲比赛PPT模板

    模板介绍 一份高质量的PPT模板,可以让你在日常的工作中展示自我.脱颖而出.去赢得更多机会,今天小编分享一份精美的病例演讲比赛PPT模板 PPT模板名称:病例演讲比赛PPT模板,模板编号:P52765 ...

  9. C++实现演讲比赛流程管理系统

    文章目录 1.演讲比赛程序需求 1.1比赛规则 2.项目创建 2.1创建项目 2.2 添加文件 3.创建管理类 3.1 创建文件 4.菜单功能 4.1 添加成员函数 4.2 菜单功能实现 4.3 测试 ...

最新文章

  1. VS2008 解决方案配置器,即Debug,Release 模式选择
  2. 深入JVM系列(二)之GC机制、收集器与GC调优
  3. 威联通架设php网站_如何架设PHP服务器
  4. 【python】时间处理函数以及文件操作
  5. UVA 297 Quadtrees
  6. 为什么我的Spring @Autowired字段为空?
  7. 远程连接线上的mysql失败 客户端和代码连接
  8. java实现二分查找
  9. 基于FPGA的四轴运动控制IC设计(verilog)
  10. Win10家庭中文版 如何启用组策略
  11. 「小狼毫」-- rimeime 中州韵输入法引擎
  12. 服务器分区系统安装win7系统教程,详细教您gpt分区安装win7步骤
  13. linux的tomcat日志,linux下查看tomcat的日志
  14. 送给1987年左右的朋友,看完是不是有些泪水
  15. 如何编写一个Java帮助文档
  16. 山西省忻州一中2021高考成绩查询,【高考直击】2021年高考今日开考
  17. cad中lisp文件给恶作剧_[软件心得]我用的CAD,LISP加载文件
  18. 我国计算机发展里程碑,我国超级计算机新的里程碑
  19. CDN源站数据同步优化总结
  20. PortTunnel端口转发

热门文章

  1. 2022年考研计算机组成原理_2 数据表示和运算
  2. 嵌入式系统——软件测试工程
  3. java 从m个数中均匀找出n个数_M个数里面找出最大的N个数
  4. 彩电主板更换后图像是矩型怎么处理_液晶彩电主板常见故障维修
  5. Builder 模式在 Guava 中的应用
  6. spark数据倾斜解决之提高并行度
  7. kafka创建topic报错
  8. 安装恩智浦IDE与配置SDK和烧录程序
  9. Linux开发_生成executable (application/x-executable)可执行程序
  10. PHP初级练习实战之公司留言板(原生)