C++系列-STL容器的应用举例

STL容器的应用举例

临安春雨初霁》 陆游
世味年来薄似纱,谁令骑马客京华。
小楼一夜听春雨,深巷明朝卖杏花。
矮纸斜行闲作草,晴窗细乳戏分茶。
素衣莫起风尘叹,犹及清明可到家


code:
/*
报道的有10个同学,需要给他们分配兴趣组别,篮球,科技,音乐,随机分配。
要给他们安排学号,按顺序安排。
通过multimap进行信息的插入,key: 兴趣组别,value:学生信息

分析:
学生的名字,学号,可以存储在vector中
创建multimap,记录所有信息
*/
#include <iostream>
#include <vector>
#include <map>
using namespace std;

class Student
{
public:
	Student(string name, int id) : m_name(name), m_id(id) {}
	string m_name;
	int m_id;
};

template<typename T1, typename T2>
void print_map(const multimap<T1, T2>& mp)
{
	for (auto i_mp : mp)
	{
		cout << i_mp.first << ", " << i_mp.second.m_name << ", id: " << i_mp.second.m_id << endl;
	}
}

void print_vector(const vector<Student>& vect)
{
	for (auto i_vect : vect)
	{
		cout << "name: " << i_vect.m_name << ", id: " << i_vect.m_id << endl;
	}
}

void creat_worker(vector<Student>& v_stu)
{
	string name_str = "ABCDEFGHIJ";

	for (int i_loop = 0; i_loop < 10; i_loop++)
	{
		string temp_name = "学生";
		temp_name += name_str[i_loop];
		Student stu(temp_name, i_loop + 1);
		v_stu.push_back(stu);
	}
}

void  creat_worker_map(vector<Student>& v_stu, multimap<string, Student>& mp_stu)
{
	string array[3] = { "篮球", "科技", "音乐" };
	for (auto i_v_stu : v_stu)
	{
		mp_stu.insert(make_pair(array[rand() % 3], i_v_stu));
	}
}

int main()
{
	// 创建学生,v_stu中有学生姓名和学号信息
	vector<Student> v_stu;
	creat_worker(v_stu);
	// 以兴趣班作为key,学生作为value
	multimap<string, Student> mp_stu;
	creat_worker_map(v_stu, mp_stu);
	print_map(mp_stu);
	
	system("pause");
	return 0;
}

result:
科技, 学生C, id: 3
科技, 学生D, id: 4
科技, 学生F, id: 6
科技, 学生I, id: 9
篮球, 学生G, id: 7
篮球, 学生H, id: 8
音乐, 学生A, id: 1
音乐, 学生B, id: 2
音乐, 学生E, id: 5
音乐, 学生J, id: 10
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值