gpt4 book ai didi

c++ - std::vector Erase - 它会自动取消分配吗?

转载 作者:行者123 更新时间:2023-11-27 23:17:20 26 4
gpt4 key购买 nike

在下面的代码中,mKnownRSList 的类型是:

  std::vector<RSAddress *> 

RSAddress 是我写的一个类。函数 removeItem 从这个 vector 中删除一个项目。

我的问题是,在对 mKnownRSList 调用删除函数后,我是否应该取消分配由 std::remove_if 返回的迭代器指向的地址。目前,我明确地对名为 last 的取消引用的迭代器发出删除调用。你认为这种做法正确吗?谢谢。

void 
ABC::removeItem(RSAddress * rsAddr)
{
auto last =
std::remove_if(mKnownRSList.begin(),
mKnownRSList.end(),
[rsAddr]( RSAddress * o )
{
return (*o == *rsAddr);
});

mKnownRSList.erase(last, mKnownRSList.end());

delete *last;
}

最佳答案

您应该首先删除容器内指针指向的内容,然后从容器中移除/删除实际指针。

您在这里所做的是取消引用一个指向不再存在的东西的迭代器。

关于c++ - std::vector Erase - 它会自动取消分配吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15568828/

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