使用指针擦除std :: list中的元素?

时间:2013-04-05 22:17:34

标签: c++ list std

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
     }
}

我的问题是,如何使用指向该元素的指针删除列表中的元素?我想这样做而不使用迭代器来代替指针。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

你不能直接这样做(尽管看到本杰明对间接方式的回答)。列表节点包含的数据多于仅包含的对象(例如指向前一个节点和下一个节点的指针),但是您的原始指针仅指向包含的对象。