在C++中,myVector.erase(myObject)不会在myObject上调用delete。myVector.erase()函数用于从向量(vector)中删除指定的元素,它会调用元素的析构函数来销毁对象,但不会调用delete来释放内存。这是因为向量中的元素是通过值传递的方式存储的,而不是通过指针。当调用erase()函数时,它会调用元素的析构函数来销毁对象,并且在向量中移动其他元素以填补被删除元素的空白。因此,不需要手动调用delete来释放内存。
如果myVector中存储的是指针类型的对象,例如指向动态分配的对象的指针,那么在调用erase()函数之前,需要手动调用delete来释放内存。例如:
delete myVector[index];
myVector.erase(myVector.begin() + index);
这里首先调用delete来释放指针指向的对象的内存,然后再调用erase()函数从向量中删除该指针。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云