目录

vector和map的简单介绍:

今天我们用vector容器和map容器实现以下简单的功能:

案例描述:

图解:  ​

实现步骤: 

代码实现:

运行结果:


vector和map的简单介绍:

map和vector都是C++ STL(Standard Template Library)中的容器。

Vector是一种动态数组,可以在运行时随意地添加或删除元素。它的元素排列是连续的,所以可以通过索引或迭代器高效地访问元素。Vector适合于需要随机访问和频繁插入和删除元素的场景。

Map是一种关联容器,用于存储键-值对。Map可以根据键快速地检索和访问值。Map与vector不同,它不是基于位置(即索引)的容器,因此访问元素的方式不同。Map的元素是按照键排序的,可以通过迭代器或键访问元素。Map适合于查找或插入元素的操作频繁或需要按键排序的场景。

详细介绍:C++ map类成员介绍 (map与multimap)_我是一盘牛肉的博客-CSDN博客

                C++ vector类成员函数介绍_我是一盘牛肉的博客-CSDN博客

今天我们用vector容器和map容器实现以下简单的功能:

案例描述:

       公司新招了五个人,需要为其录入基本信息(姓名,年龄,薪资),并且为其分配部门,我们要利用vector容器来存储员工,利用multimap来分部门显示员工信息。

图解:
  

即我们利用multimap相同的键值可以存储多个元素这一特性,用key来存储部门编号,用value来存储vetcor容器中的各个员工成员。

实现步骤: 

1.用vector存储创建的五名员工,并且录入基本信息。

2.将vector中的员工按照部门编号分类放到mutitmap容器中。

3.实现打印函数。

代码实现:

#include<iostream>
#include<vector>
#include<map>
#include<string>
using namespace std;
class person
{
public:
	person(string name,int money,int department)
	{
		m_name = name;
		m_money = money;
		m_department = department;


	}
	string m_name;
	int m_money;
	int m_department;


};
void print(const multimap<int, person> d,int a)
{
	if (a == 1)
	{
		cout << "以下为策划部门:" << endl;

	}
	else if (a == 2)
	{
		cout << "以下为美术部门:" << endl;
	}
	else if (a == 3)
	{
		cout << "以下为研发部门:" << endl;
	}
	int count = d.count(a);
	int index = 0;
	for (auto t = d.find(a); t!=d.end()&&index<count;t++,index++)
	{
		cout<<"姓名:" << t->second.m_name << "工资:" << t->second.m_money<<endl;
	}
}
void test01()
{
	vector<person>persons;
	for (int i = 0; i < 5; i++)
	{
		string name;
		int money;
		int department;
		cout << "请输入员工姓名:" << endl;
		cin >> name;
		cout << "请输入员工薪资:" << endl;
		cin >> money;
		cout << "请输入员工部门(1.策划  2.美术  3.研发)" << endl;
		cin >> department;

		person* p = new person(name, money, department);
	
		persons.push_back(*p);

	}
	multimap<int, person> difworkers;
	for (auto t1=persons.begin();t1!=persons.end();t1++)
	{
		difworkers.insert(pair<int, person>(t1->m_department,*t1));
	}
	
	cout << "请输入想查看哪一个部门的所有员工" << endl;
		int a;
		cin >>a;
		print(difworkers, a);

}

int main()
{
 test01();
}


运行结果:

结束!

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐