C++ vector与map的结合运用
map和vector都是C++ STL(Standard Template Library)中的容器。Vector是一种动态数组,可以在运行时随意地添加或删除元素。它的元素排列是连续的,所以可以通过索引或迭代器高效地访问元素。Vector适合于需要随机访问和频繁插入和删除元素的场景。Map是一种关联容器,用于存储键-值对。Map可以根据键快速地检索和访问值。Map与vector不同,它不是基于位置
目录
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();
}
运行结果:
结束!
更多推荐
所有评论(0)