0%

std::map小记录

最近在项目中使用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;
}