📅  最后修改于: 2023-12-03 15:22:58.780000             🧑  作者: Mango
在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解决指针管理的问题,确保程序的可靠性。