gpt4 book ai didi

c++ - 删除/删除 vector 项的最有效/最快的方法

转载 作者:行者123 更新时间:2023-11-28 02:38:13 33 4
gpt4 key购买 nike

有几种方法可以删除/移除 vector 中的项目。

我有一个指针 vector ,我需要在类的析构函数中删除所有指针。

什么是最有效/最快甚至最安全的方式?

// 1º
std::for_each(vector.begin(), vector.end(), [] (Object * object) {
delete object;
});

// 2º
for (int i = 0; i < vector.size(); ++i)
{
delete vector[i];
}

// 3º
for (auto current = vector.begin(); current != vector.end(); ++current){
delete (* current);
}

最佳答案

最安全的方法是使用 std::vector<std::unique_ptr<Object>>std::vector<std::shared_ptr<Object>>取决于 Object 所需的生命周期语义实例。

无论哪种方式,您都不需要在析构函数中做任何; vector 的析构函数将破坏所有智能指针实例。反过来,他们会自动删除 Object根据其特定语义的实例:unique_ptr会立即删除它们,而 shared_ptr一旦没有其他shared_ptr就会删除它们s 指向那个对象。

假设您需要存储指针,也不太可能有更快的方法。 (如果你不需要多态性,那么你可以只使用 std::vector<Object>,它少了一层间接。)

关于c++ - 删除/删除 vector 项的最有效/最快的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26824064/

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