我有这样的地图:
struct cmp_str
{
bool operator()(char const *a, char const *b)
{
return std::strcmp(a, b) < 0;
}
};
std::map<char *, std::atomic<bool>, cmp_str> my_map;
我只在创建时向my_map
添加密钥,
这很重要,因为我使用来自多线程的my_map
没有锁定。
我希望编译器在创建后检查没有人向my_map
添加密钥。
但我无法将my_map
定义为const
,因为那时我无法改变
数据。有可能以某种方式制作一半const
地图吗?
我的意思是它有固定数量的键,所有键都在创建过程中定义, 但是可以在地图中更改数据(而不是键)吗?
我考虑过在std::atomic<bool> *const
中暂停const std::map
,
但是我必须在此之后手动释放内存。像std::unique_ptr
这样的智能指针在这里没有帮助。
如何在const
的{{1}}的帮助下制作一半std::
地图的任何想法?