📜  向量的 shared_ptr c++ push_back - C++ (1)

📅  最后修改于: 2023-12-03 15:22:58.780000             🧑  作者: Mango

向量的 shared_ptr c++ push_back

在C++中使用向量(vector)时,我们可能需要将指针存储在向量中。但存储指针本身容易引发内存管理问题。为了解决这个问题,我们可以使用智能指针。其中,shared_ptr可以在多个指针之间共享对象的所有权。

在使用向量时,我们也需要在push_back时使用智能指针。下面是一个示例:

#include <iostream>
#include <vector>
#include <memory>

class MyClass {
public:
    MyClass(int x) : m_x(x) {}
    void print() {
        std::cout << "x = " << m_x << std::endl;
    }
private:
    int m_x;
};

int main() {
    std::vector<std::shared_ptr<MyClass>> myVector;
    myVector.push_back(std::make_shared<MyClass>(1));
    myVector.push_back(std::make_shared<MyClass>(2));
    myVector.push_back(std::make_shared<MyClass>(3));

    for(auto& ptr : myVector) {
        ptr->print();
    }

    return 0;
}

在这个示例中,我们创建了一个存储指向MyClass对象的智能指针的向量。使用std::make_shared可以创建新的智能指针并将其添加到向量中。最后,我们循环遍历向量并调用每个MyClass对象的print()方法。

总之,在使用向量时,我们可以使用std::shared_ptr解决指针管理的问题,确保程序的可靠性。