我有一個multi_index_container,其索引是composite_key。 但我無法找到一種方法來清除元素的密鑰。 請參閱以下內容:使用composite_key從multi_index_container中擦除每個鍵的元素
#include <boost/multi_index_container.hpp>
#include <boost/multi_index/member.hpp>
#include <boost/multi_index/hashed_index.hpp>
#include <boost/multi_index/composite_key.hpp>
using namespace boost::multi_index;
struct Point
{
int x, y;
};
void func()
{
multi_index_container<Point,indexed_by<
hashed_unique<
composite_key<Point,
member<Point,int,&Point::x>,
member<Point,int,&Point::y> >
> > > points;
points.find(boost::make_tuple(3, 3)); // <- works
points.erase(boost::make_tuple(3, 3)); // <- failes to compile
}
擦除(鍵)工作,該不是綜合指數。但我無法找到複合鍵的正確語法。
好吧,但我想知道這是什麼的簽名是否爲' size_type擦除(key_param_type x)'。我在預處理的代碼中找到它。有沒有辦法用composite_key調用它? –
另一件事:擦除(迭代器,迭代器)返回一個迭代器。哈希指數可能需要很長時間,不是嗎?如果它以某種方式可能,我仍然傾向於調用擦除(鍵)。 –
爲什麼擦除沒有擴展到處理兼容密鑰的原因是'template迭代器擦除(const CK&ck)'會在我們稱之爲擦除(它)的情況下與現有的迭代器擦除(迭代器) '有一個*不是'iterator'的對象,但可以轉換爲'iterator'。我承認,有點病態。 –