c++ - vector 中的删除函数不会删除指针?

标签 c++ arrays pointers recursion vector

我正在尝试递归地打印出存储在 vector 中的动态指针数组中的数据。 使用 vector 的删除功能,我想出了这个代码:

void output(vector<Person*> array)  
{
   unsigned long size=array.size();
   if(size==0){
   }
   else{
      array[0]->displayData();
      array.erase(array.begin());
      output(array);
    }
}

虽然此代码有效(我能够打印出所有数据),但删除函数并未“删除”指针。

所以当我在我的驱动程序中使用相同的数组变量再次调用输出函数并能够重新打印数据时,我真的很惊讶。

如果删除函数没有删除指针,我如何能够相应地打印数据? 如果它不是删除指针,因为它是动态的,那么“删除”函数对特定位置的指针做了什么?

谢谢。

最佳答案

你的 output按值获取 vector ,因此您不会删除任何内容,而只会删除一个拷贝。也许我没明白你的问题,你能发布更多代码吗?并且不知道为什么你需要一个递归函数来删除 vector ,为什么不直接调用 array.erase(array.begin(), array.end()) ?顺便说一句,你不应该调用你的参数 array , array<array> 中定义的类静态数组的类, 因此名称冲突不是一个好主意(以防您可能包括 <array>using namespace std; )

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

相关文章:

c++ - 变量名前的"::"c++

C++ makefile 同时分离声明和实现

c++ - 如何将代码更改为交换指针而不是使用 "temp"指针?

c++ - 删除动态创建的二维数组时出现访问冲突消息

c++ - Eclipse 中的枚举声明

c++ - 为什么此 C++ 代码不起作用 - 尝试删除集合中的元素时常量引用错误

arrays - 如何在 TypeScript 中正确键入 Array.map 回调?

python - 如何构造一个适合 numpy 排序的数组?

ios - UISearchDisplayController - 显示来自服务器的搜索结果

c - 将动态分配的指针传递给 pthread 的正确方法是什么