c++11 map容器中怎么添加atomic类型的值

在项目中碰到一个问题,需使用一个atomic<int>值做为map容器的值,但是用普通的方法会报类似下面的错误

error C2248: std::atomic<__int64>::atomic : cannot access private member declared in class std::atomic<__int64>

error: use of deleted function std::atomic<long int>::atomic(const std::atomic<long int>&)

有以下两种方法可以选择,我是使用的第一种

#include <atomic>
#include <map>
#include <tuple>

typedef std::atomic<int64_t> value_t;
typedef std::map<uint64_t, value_t> atomic_map_t;

int main()
{
    int64_t in = 5;

    atomic_map_t map;
    map.emplace(std::piecewise_construct, 
            std::forward_as_tuple(1), std::forward_as_tuple(in));

    auto it = map.find(1);
    int64_t out =  it->second.load(); 

    return 0;
}

#include <atomic>
#include <map>
#include <memory>


using atomic_ptr_t = std::shared_ptr<std::atomic<int64_t>>;
typedef std::map<uint64_t, atomic_ptr_t> value_map_t;


int main()
{
    value_map_t map;
    map[1] = atomic_ptr_t(new std::atomic<int64_t>(0));

    return 0;
}

看详细的可以看:https://stackoverflow.com/questions/35091396/stdatomic-as-a-value-of-stdmap

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值