#include<iostream> #include<map> #include<vector> #include <c++/fstream> #include <c++/cassert> #include <c++/sstream> #include <sstream> #include <string> #include <c++/cstring> #include <string.h> using namespace std; class Staff{ public: Staff(string filename){ ifstream in; in.open(filename.data()); assert(in.is_open()); string s,stres; while (getline(in,s)){ vector<string> spl; stringstream ss(s); while (ss>>stres){ spl.push_back(stres); } for (int i = 0; i < spl.size(); ++i) { info_map.insert(make_pair(spl[0],make_pair(stoi(spl[1]),stoi(spl[2])))); depart_map[stoi(spl[1])].emplace_back(spl[0]); center_map[stoi(spl[2])].emplace_back(spl[0]); } } } pair<int,int> getMembersInfo(string name){ return info_map[name]; } vector<string> getMembersOfDepart(int depart_id){ return depart_map[depart_id]; } vector<string> getMembersOfCenter(int center_id){ return center_map[center_id]; } private: map<string,pair<int,int>> info_map; map<int,vector<string>> depart_map; map<int,vector<string>> center_map; }; int main(){ Staff *pStaff = new Staff("C:\\Users\\l50006562\\CLionProjects\\untitled\\staff.txt"); vector<string> depart = pStaff->getMembersOfDepart(10); cout<<depart[0]<<endl; vector<string> vector = pStaff->getMembersOfCenter(103); cout<<vector[0]<<endl; pair<int,int> p= pStaff->getMembersInfo("label"); cout<<p.first<<" "<<p.second<<endl; return 0; }