使用固定(const)键和可变数据映射?

时间:2017-12-06 16:45:54

标签: c++ c++11

我有这样的地图:

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::地图的任何想法?

0 个答案:

没有答案