C++系列-STL容器的应用举例
STL容器的应用举例
- @[TOC](STL容器的应用举例)
STL容器的应用举例
- @[TOC](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