C++ 从列表C+的向量中删除元素+;
我有一个类,它的成员变量是std::list。我还有这些类的向量。如果我从向量中删除一个元素,是否会对删除的实例调用类析构函数?是否必须使用析构函数中的list::clear()显式清除列表C++ 从列表C+的向量中删除元素+;,c++,list,vector,stdlist,C++,List,Vector,Stdlist,我有一个类,它的成员变量是std::list。我还有这些类的向量。如果我从向量中删除一个元素,是否会对删除的实例调用类析构函数?是否必须使用析构函数中的list::clear()显式清除列表 class my_class { string class_name; list<int> my_list; public: my_class(); ~my_class(); // destructor }; vector<my_class> m
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?
class my\u class{
字符串类名称;
列出我的清单;
公众:
我的班级();
~my_class();//析构函数
};
向量my_vec;
my_类obj1、obj2、obj3;
我的车辆向后推(obj1);
我的车辆向后推(obj2);
我的向量向后推(obj3);
my_vec.erase(my_vec.begin()+2)//这是否足够?
std::vector
遵循这样的原则,即确保在对象超出范围时调用对象的析构函数,并从内存中删除对象
针对您的问题:
如果我从向量中删除一个元素,是否会对删除的实例调用类析构函数?是
是否必须使用析构函数中的list::clear()显式清除列表?否
请注意:RAII不使用指针。因此,它不会取消引用指针,也不会调用已取消引用对象上的析构函数,也不会从内存中删除已取消引用的对象。答案如下:好的,听起来像是,共享指针的计数器将递减。