c++ - 当 vector 在内部类中时,如何删除指向对象的 vector 指针

标签 c++ pointers vector

我正在尝试删除包含对指针的引用的完整 vector 。

我已经在 stackoverflow 中找到了关于这个的线程,但我的情况有点不同,我相信,当其他人阅读这个问题时,他们会受益。

我的类中有内部类,以隐藏初始化和变量的实现。因此,当我尝试使用它时,我必须创建指向 vector 的指针。在这里,我写了如何从 vector 和 clean vector 本身中完全删除这些对象的方法:

   void Program::deleteAll(){
      vector<Category> *ptr = &(impl->categories);
      vector<Category>::iterator it;
      for (it = ptr->begin(); it != ptr->end(); ){
         delete *it;  
         it = ptr->erase(it);
         it++;
      }
   }

问题在这里:删除 *it。我在这里得到一个错误。如何在这个循环中删除存储为对象指针的对象?我可以告诉你,我是如何将对象放入 vector 类别的:

   void Program::addCategory(string name){
      vector<Category> *ptr = &(impl->categories);
      Category cat(name);
      ptr->push_back(cat);
   }

最佳答案

就这么简单

void Program::deleteAll()
{
   impl->categories.resize(0);
}

每个 Category 对象的析构函数将由 std::vector 调用,因此 Category 内的所有指针都将被清除。

关于c++ - 当 vector 在内部类中时,如何删除指向对象的 vector 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19910842/

相关文章:

c++ - 每个显示器 DPI 感知 : black window glitch with NVIDIA Optimus

C++:比较基类和派生类的指针

c++ - 滥用指针会产生段错误。我仍然不确定如何纠正它

c - 关于数组和指针

c++ - openCV:将 Mat 保存到 vector<vector<int>>

vector - 如何根据原始元素将向量中的元素替换为另一个元素

c++ - 为什么 valgrind 显示泄漏,即使包含动态分配对象的 vector 已被释放?

c++ - 使用 std::ofstream 时如何设置 O_CLOEXEC

c++ - 从原始指针创建 shared_ptr 的链表

c++ - 编码新手需要有关 if 语句的帮助