我有以下内容:
struct foo_and_number_helper {
std::string foo;
uint64_t number;
};
struct foo_and_number {};
struct bar {};
using my_bimap = boost::bimaps::bimap<
boost::bimaps::unordered_set_of<boost::bimaps::tagged<foo_and_number_helper, foo_and_number>>,
boost::bimaps::multiset_of<boost::bimaps::tagged<std::string, bar>>
>;
my_bimap instance;
我希望能够像这样调用查找和擦除方法:
instance.left.find("foo")
代替instance.left.find({"foo",1})
和
instance.left.erase("foo")
代替instance.left.erase({"foo",1})
.
我只想使用“foo_and_number_helper”的“foo”部分,而不是从左侧调用的方法查找和擦除的两个部分。如何做到这一点?我试图阅读 bimap 实现,但我仍然很难做到。
我已经问过更广泛的问题:C++ bimap 是否可能在视图的一侧具有与视图值的另一侧不同的键?怎么做?
并且从我必须覆盖的评论中operator <
,但我什至不确定这是否足够。