1
class SororityBeerExpo{
public:

     std::list<LaysCrankdPepChip> m_chipList;

     void destroyChip(LaysCrankdPepChip * target)
     {
         // m_chipList needs to erase that which is pointed at by target but
         // erase() requires an iterator which is not what we got to work with
         // remove() needs a value which is not right either
     }
}

我的问题是,如何使用指向该元素的指针删除列表中的元素?我想在不使用迭代器代替指针的情况下做到这一点。

4

2 回答 2

3

您可以对列表中的元素进行 [线性] 搜索,将每个元素的地址与您的指针进行比较(std::find_if符合要求)。当然,最终您仍将使用迭代器,因为这正是我们所list::erase需要的。

于 2013-04-05T22:21:12.240 回答
1

您不能直接执行此操作(尽管有关执行此操作的间接方式,请参见本杰明的回答)。列表节点包含的数据不仅仅是包含的对象(例如指向前一个和下一个节点的指针),但您的原始指针仅指向包含的对象。

于 2013-04-05T22:23:40.437 回答