我有一个boost多索引结构,它将boost :: shared_ptr保存到A类的实例中。
当我使用其中一个索引的“find”函数时,我得到一个迭代器“it”,我可以通过A* a = it->get();
从中获取实际指针。如何从多索引中删除a
知道多索引结构的erase
函数采用迭代器,而不是指针或boost :: shared_ptr?事情就是我要擦除对象的程序,我不再有我的初始迭代器,只有实际的指针。
由于
答案 0 :(得分:5)
多指标结构没有“erase
功能”。请注意,erase
是索引的成员函数,其签名可能因索引类型而异。
特别是,有序和散列索引的following overloads为erase
:
iterator erase(iterator position);
size_type erase(const key_type& x);
iterator erase(iterator first,iterator last);
即。如果shared_ptr
是密钥,您肯定可以将其传递给erase
函数。
当然,您可以先调用find
,获取迭代器并将其传递给erase
。