综合使用map和set

    技术2022-05-13  17

    代码示例:

    #include <iostream> #include <string> #include <set> #include <map> using namespace std; class CUserDataInfo { public: CUserDataInfo(); CUserDataInfo(string username, string city); ~CUserDataInfo(); const string getUsername() const; void setUsername(const string username); const string getCity() const; void setCity(const string city); private: string m_username; string m_city; }; CUserDataInfo::CUserDataInfo(string username, string city) { m_username = username; m_city = city; } CUserDataInfo::~CUserDataInfo() { } const string CUserDataInfo::getUsername() const { return m_username; } void CUserDataInfo::setUsername(const string username) { m_username = username; } const string CUserDataInfo::getCity() const { return m_city; } void CUserDataInfo::setCity(const string city) { m_city = city; } class CAppDeal { public: CAppDeal(); ~CAppDeal(); void showUsersInfo(); private: map<string,set<CUserDataInfo*> *> m_mapset; }; CAppDeal::CAppDeal() { set<CUserDataInfo*>* p_userset = NULL; CUserDataInfo * p_user = NULL; for(int i = 0; i< 3; i++) { string username("wuzhenghua"); if(m_mapset.count(username) == 0) { p_userset = new set<CUserDataInfo*>(); string city("beijing"); p_user = new CUserDataInfo(username, city); p_userset->insert(p_user); m_mapset.insert(make_pair(username,p_userset)); } else { p_userset = m_mapset[username]; string city("shenzhen"); if(p_userset != NULL) { p_user = new CUserDataInfo(username, city); p_userset->insert(p_user); } } } } CAppDeal::~CAppDeal() { CUserDataInfo * p_user = NULL; map<string,set<CUserDataInfo*> *> ::iterator iter = m_mapset.begin(); while(iter != m_mapset.end()) { if(iter->second != NULL) { set<CUserDataInfo*>::iterator iterSet = iter->second->begin(); while(iterSet != iter->second->end()) { p_user = *iterSet; if (NULL != p_user) { delete p_user; p_user = NULL; } iterSet++; } delete iter->second; iter->second = NULL; } iter++; } m_mapset.clear(); } void CAppDeal::showUsersInfo() { CUserDataInfo * p_user = NULL; map<string,set<CUserDataInfo*> *> ::iterator iter = m_mapset.begin(); while(iter != m_mapset.end()) { if(iter->second != NULL) { set<CUserDataInfo*>::iterator iterSet = iter->second->begin(); while(iterSet != iter->second->end()) { p_user = *iterSet; cout<<p_user->getUsername()<<" " <<p_user->getCity()<<endl; iterSet++; } } iter++; } } int main(int argc,char** argv) { CAppDeal * mm = NULL; mm = new CAppDeal(); mm->showUsersInfo(); delete mm; }

    [root@local~ work]# g++ mapset.cpp [root@local~ work]# ./a.out wuzhenghua beijing wuzhenghua shenzhen wuzhenghua shenzhen


    最新回复(0)