我有一个 boost 多索引结构,它将 boost::shared_ptr 保存到类 A 的实例中。当我使用其中一个索引的“查找”函数时,我得到一个迭代器“it”,我可以从中取回实际指针通过A* a = it->get();
。a
知道erase
多索引结构的函数采用迭代器,而不是指针或 boost::shared_ptr,如何从多索引中删除?事情是在我想要擦除对象的程序点上,我不再有我的初始迭代器,只有实际的指针。
谢谢
我有一个 boost 多索引结构,它将 boost::shared_ptr 保存到类 A 的实例中。当我使用其中一个索引的“查找”函数时,我得到一个迭代器“it”,我可以从中取回实际指针通过A* a = it->get();
。a
知道erase
多索引结构的函数采用迭代器,而不是指针或 boost::shared_ptr,如何从多索引中删除?事情是在我想要擦除对象的程序点上,我不再有我的初始迭代器,只有实际的指针。
谢谢
没有“erase
多索引结构的功能”这样的东西。请注意,它erase
是index的成员函数,其签名可能因索引类型而异。
特别是,有序和散列索引具有以下重载:erase
iterator erase(iterator position);
size_type erase(const key_type& x);
iterator erase(iterator first,iterator last);
即如果shared_ptr
是一个键,你绝对可以将它传递给erase
函数。当然,你可以find
先调用,获取迭代器,然后传给erase
.