gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 00:28:35 25 4
gpt4 key购买 nike

我正在尝试递归地打印出存储在 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/

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