ZBLOG

std::vector 类型数据如何初始化并使用

要声明一个类型为 std::vector<std::atomic<float>> 的原子向量,并对其进行初始化和使用,你可以按照以下方式进行操作:

#include <iostream>
#include <vector>
#include <atomic>

int main() {
    std::vector<std::atomic<float>> data;
    
    // 初始化原子向量,添加初始元素
    data.push_back(1.0f);
    data.push_back(2.0f);
    data.push_back(3.0f);

    // 在不同线程中对原子向量的元素进行操作
    std::thread t1([&]() {
        data[0] += 10.0f;
    });

    std::thread t2([&]() {
        data[1] *= 2.0f;
    });

    t1.join();
    t2.join();

    // 打印原子向量中的元素
    for (const auto& value : data) {
        std::cout << value << " ";
    }

    return 0;
}

在上述代码中,我们使用了 <atomic> 头文件提供的 std::atomic 类型来包装 float 元素。这样可以保证在多线程环境下对原子变量的操作是原子的。

我们首先通过调用 push_back 方法将初始值添加到原子向量中。然后,在两个不同的线程中修改了向量的不同元素:一个线程将第一个元素增加10,另一个线程将第二个元素乘以2。

最后,我们遍历打印了原子向量中的每个元素的值。

请注意,在使用原子类型时,需要遵循适当的同步机制,例如互斥锁或原子操作函数(如 fetch_add()fetch_sub() 等)。这取决于具体的操作和并发需求。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=15845

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?