2012-07-19 46 views
2

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

感谢

回答

3

有没有这样的事“多索引结构的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

相关问题