gpt4 book ai didi

c++ - 从列表 vector 中删除元素 C++

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:42:27 25 4
gpt4 key购买 nike

我有一个以 std::list 作为成员变量的类。我也有这些类的 vector 。如果我从 vector 中删除一个元素,是否会在删除的实例上调用类析构函数?我是否必须在析构函数中使用 list::clear() 明确清除我的列表?

class my_class {
string class_name;
list<int> my_list;
public:
my_class();
~my_class(); // destructor
};

vector<my_class> my_vec;

my_class obj1, obj2, obj3;
my_vec.push_back(obj1);
my_vec.push_back(obj2);
my_vec.push_back(obj3);

my_vec.erase(my_vec.begin()+2); //Is this sufficient?

最佳答案

std::vector 遵循 RAII原则,它确保调用对象的析构函数,并在对象超出范围时从内存中删除该对象。

特别针对您的问题:

如果我从 vector 中删除一个元素,是否会在删除的实例上调用类析构函数?

我是否必须在析构函数中使用 list::clear() 显式清除我的列表?

请注意:RAII 不会对指针做任何。因此,它不会取消引用指针,也不会在取消引用的对象上调用析构函数,也不会从内存中删除取消引用的对象。

关于c++ - 从列表 vector 中删除元素 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26499179/

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