4

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

谢谢

4

1 回答 1

5

没有“erase多索引结构的功能”这样的东西。请注意,它eraseindex的成员函数,其签名可能因索引类型而异。

特别是,有序和散列索引具有以下重载erase

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

即如果shared_ptr是一个键,你绝对可以将它传递给erase函数。当然,你可以find先调用,获取迭代器,然后传给erase.

于 2012-07-19T10:57:07.117 回答