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
}
}
我的问题是,如何使用指向该元素的指针删除列表中的元素?我想这样做而不使用迭代器来代替指针。
答案 0 :(得分:3)
您可以对列表中的元素进行[线性]搜索,将每个元素的地址与指针进行比较(std::find_if
将符合条件)。当然,您最终仍会使用迭代器,因为这是list::erase
所需要的。
答案 1 :(得分:1)
你不能直接这样做(尽管看到本杰明对间接方式的回答)。列表节点包含的数据多于仅包含的对象(例如指向前一个节点和下一个节点的指针),但是您的原始指针仅指向包含的对象。