复杂数据—结构体的使用
合理的使用stl库中数据结构,并定义合适的结构体,存储各种复杂的数据,实现增删查改功能
#include <iostream>
#include <vector>
#include <unordered_map>
#include <algorithm>
using namespace std;
// 典型的复杂数据处理,定义一个存储的结构体,并进行各种不同类型数据的存储
struct Room {
int id;
float para1;
string para2;
vector<int> para3;
Room(int id, float para1, string para2, const vector<int> ¶3) : id(id), para1(para1), para2(para2), para3(para3) {}
};
class Solution {
public:
Solution(){}
// 添加数据,如果发现对应的id已经存在,则进行原数据的替换,否则创建新的数据进行存储
bool AddRoom(int id, float para1, string para2, vector<int> para3)
{
if (mp.count(id)) {
mp[id]->para1 = para1;
mp[id]->para2 = para2;
mp[id]->para3 = para3;
return false;
}
mp[id] = new Room(id, para1, para2, para3);
return true;
}
// 删除对应id的数据,count函数可以返回查找元素的个数
bool DeleteRoom(int id)
{
if (mp.count(id)) {
mp.erase(id);
return true;
}
return false;
}
unordered_map<int, Room*> GetMp()
{
unordered_map<int, Room*> mp_copy = mp;
return mp_copy;
}
private:
unordered_map<int, Room*> mp;
};
int main()
{
Solution S;
int id = 1;
float para1 = 2.0;
string para2 = "hello woerd";
vector<int> para3{1, 3};
S.AddRoom(id, para1, para2, para3);
auto mp = S.GetMp();
for (auto item : mp) {
cout << item.first << endl;
cout << item.second->para1 << endl;
cout << item.second->para2 << endl;
vector<int> vec = item.second->para3;
for (auto i : vec) {
cout << i << endl;
}
}
return 0;
}