gpt4 book ai didi

c++ - 删除指针 vector

转载 作者:可可西里 更新时间:2023-11-01 16:39:34 25 4
gpt4 key购买 nike

我需要创建类实例的指针,而程序在编译时并不知道我将创建多少个指针。对于删除,我考虑的是将指针存储在一个vector中,然后一个一个的删除。使用智能指针会是一种更清洁的方法吗?如果不想使用智能指针,那么这种 vector 的使用是否被认为是干净的?

最小代码:

#include <vector>
using namespace std;

class Foo {
public:
Foo();
};
Foo::Foo(){}
void createFooVector(int nb, std::vector<Foo*> &v){
for(int i=0;i<nb;i++){
Foo* f = new Foo();
v.push_back(f);
}
}
int main(int argc, char *argv[]){
std::vector<Foo*> v;
createFooVector(5,v);
while (!v.empty()){
Foo* f = v.back();
v.pop_back();
delete f;
}
}

最佳答案

我建议使用 boost::pointer_vector , 一个 std::vector<std::unique_ptr<Foo>> ,或推出您自己的 Foo拥有vector<Foo*>的经理类(class)并处理构造函数中的删除(您应该将此视为“专家”解决方案,并且只有在您完全理解异常安全性的情况下才尝试这样做)。您不希望手动进行删除,这很容易导致错误。

关于c++ - 删除指针 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15942706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com