2012-07-19 67 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

相關問題