最近在项目中使用std::map
的一些记录。
有自定义的数据类型Data
和一个map
成员,如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
class Data { public: Data(){}; ~Data(){};
};
std::map<int,Data*> m_map;
|
1 2 3 4 5 6 7 8 9
| void insertData(int id, Data* dat) { auto ret = m_map.insert(std::pair<int, Data*>(id,dat)); if(!ret.second) { delete m_map[id]; m_map[id] = dat; } }
|
1 2 3 4 5 6 7 8 9 10
| void removeDataById(int id) { auto it = m_map.find(id); if(it!= m_map.end()) { delete it->second; it->second = nullptr; m_map.erase(it); } }
|
1 2 3 4 5 6 7 8 9
| void clearData() { for(auto it : m_map) { delete it.second; it.second = nullptr; } m_map.clear(); }
|
1 2 3 4 5 6 7 8
| const Data* getDataById(int id) { if(m_map.find(id)!= m_map.end()) { return m_map[id]; } return nullptr; }
|