1

我想知道我是否应该明确地取消分配通过 myvector.erase() 从向量中擦除的指针;.

例如;

Class Sample1{
   public:
         removeSample2(Sample2 * a)
         {
             if(// if i find that a is in my sampleList1 vector with index i ){
                   // should i call here delete or something like that for a pointer ?
                   sampleList1.erase(sampleList1.begin()+i);
              }
         }

   private:
      vector<Int *> sampleList1;

            } 

Class Sample2{
     public:
           // not important areas
     private:
          Sample1 * example;
             } 
4

2 回答 2

2

我们不可能知道,因为我们不知道你想做什么。但基本答案是:

  1. 如果集合在逻辑上拥有其中的东西,那么你做错了。切勿为此目的使用普通指针的普通集合。例如,如果您复制集合,事情将变得非常糟糕。(要么使用普通的智能指针集合,要么使用专门设计用于保存指针并管理其中对象的生命周期的集合。)

  2. 如果集合不拥有其中的东西,则不delete要从集合中指针。这将导致使用这些指针的其他代码在对象被删除后访问该对象。

于 2013-05-04T19:03:24.773 回答
0

您应自行删除该元素。vector 没有分配该元素,因此它不会释放它。

于 2013-05-04T19:04:55.437 回答