我想创建unordered_map
的<string, atomic<int>>
。我会用它来增加(fetch_add),存储或加载基于字符串(键)的原子值。例如,假设我有10个原子的整数计数器,但我只想得到4或者它们的值。我想一个unordered_map
看起来像这样:我可以创建一个字符串和原子<int>键值对的unordered_map吗?
unordered_map<string, atomic<int>> myValues = {
{"first", atomic<int>(0)},
{"second", atomic<int>(0)}, ... the last key being "tenth"}
};
然后说我有一个字符串矢量像
vector<string> wanted = {"first", "third", "tenth"};
的,我想做到以下几点:
for (auto want: wanted) {
cout << myValues[want].load() << endl;
这应该打印出想要的键的值。
我可以这样做吗?如果我尝试像上面那样创建一个映射,那么我会收到错误消息,说明atomic的赋值运算符已被删除?有没有办法做到这一点?
'atomic'类型既不可复制也不可移动 – LWimsey
那么这意味着我的方法是DOA?有没有不同的方式来完成同样的事情? – Mark
而不是试图复制'原子'值(不,不!)你可以单独定义初始化数据,只是循环它和['emplace'](http://en.cppreference.com/w/cpp/container/ unordered_map/emplace)它在你的地图。 –