从Boost MultiIndex中删除

时间:2012-07-19 10:02:08

标签: boost boost-multi-index

我有一个boost多索引结构,它将boost :: shared_ptr保存到A类的实例中。 当我使用其中一个索引的“find”函数时,我得到一个迭代器“it”,我可以通过A* a = it->get();从中获取实际指针。如何从多索引中删除a知道多索引结构的erase函数采用迭代器,而不是指针或boost :: shared_ptr?事情就是我要擦除对象的程序,我不再有我的初始迭代器,只有实际的指针。

由于

1 个答案:

答案 0 :(得分:5)

多指标结构没有“erase功能”。请注意,erase索引的成员函数,其签名可能因索引类型而异。

特别是,有序和散列索引的following overloadserase

iterator  erase(iterator position);
size_type erase(const key_type& x);
iterator  erase(iterator first,iterator last);

即。如果shared_ptr是密钥,您肯定可以将其传递给erase函数。 当然,您可以先调用find,获取迭代器并将其传递给erase