首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何为不允许修改数据的shared_ptrs容器编写getter

对于不允许修改数据的shared_ptrs容器,我们可以编写一个getter函数来获取容器中的数据。下面是一个示例代码:

代码语言:cpp
复制
#include <iostream>
#include <memory>
#include <vector>

class Data {
public:
    Data(int value) : m_value(value) {}

    int getValue() const {
        return m_value;
    }

private:
    int m_value;
};

class Container {
public:
    void addData(std::shared_ptr<Data> data) {
        m_data.push_back(data);
    }

    const std::vector<std::shared_ptr<Data>>& getData() const {
        return m_data;
    }

private:
    std::vector<std::shared_ptr<Data>> m_data;
};

int main() {
    Container container;
    container.addData(std::make_shared<Data>(1));
    container.addData(std::make_shared<Data>(2));
    container.addData(std::make_shared<Data>(3));

    const std::vector<std::shared_ptr<Data>>& data = container.getData();
    for (const auto& ptr : data) {
        std::cout << ptr->getValue() << std::endl;
    }

    return 0;
}

在上面的代码中,我们定义了一个Data类来表示要存储的数据,然后定义了一个Container类来管理这些数据。Container类中的addData函数用于向容器中添加数据,getData函数用于获取容器中的数据。

注意到getData函数的返回类型是const std::vector<std::shared_ptr<Data>>&,这表示返回的容器是一个常量引用,即不允许修改容器中的数据。这样做可以确保外部代码无法修改容器中的数据,只能读取数据。

在主函数中,我们首先向容器中添加了三个Data对象,然后通过getData函数获取容器中的数据,并使用循环遍历打印出每个Data对象的值。

这样,我们就实现了一个不允许修改数据的shared_ptrs容器,并编写了一个getter函数来获取容器中的数据。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • CUDA-MODE 课程笔记 第一课: 如何在 PyTorch 中 profile CUDA kernels

    一直想系统看一下某个课程系统和科学的学习下 CUDA ,感觉 CUDA-MODE 这个课程能满足我的需求。这个课程是几个 PyTorch 的 Core Dev 搞的,比较系统和专业。不过由于这个课程是 Youtube 上的英语课程,所以要学习和理解这个课程还是需要花不少时间的,我这里记录一下学习这个课程的每一课的笔记,希望可以通过这个笔记帮助对这个课程以及 CUDA 感兴趣的读者更快吸收这个课程的知识。这个课程相比于以前的纯教程更加关注的是我们可以利用 CUDA 做什么事情,而不是让读者陷入到 CUDA 专业术语的细节中,那会非常痛苦。伟大无需多言,感兴趣请阅读本文件夹下的各个课程的学习笔记。

    01
    领券