【发布时间】:2022-12-08 22:54:10
【问题描述】:
我的问题是关于这段代码:
void put(const Tkey& key, const Tval& val){
auto& lookup = container.template get<1>();
auto it = lookup.find(key);
if( it != lookup.end() ) {
lookup.modify(it,[&](value_type& x){ x.second = val; });
}
else{
it=lookup.emplace(key, val).first;
}
container.relocate(container.begin(),container.template project<0>(it));
capacityOut();
};
第一名:.template
根据我的发现,我的容器上指定的模板关键字正在使用模板,如果我错了请纠正我。
来源:(Where and why do I have to put the "template" and "typename" keywords?)
第二名:project<0>(it)
在库中查找定义,我看到它需要一个迭代器作为参数,但我不明白project<0>(与get<1> 相同)。
我找到了一些像这样的信息:https://theboostcpplibraries.com/boost.variant,以及 Stack Overflow 上的帖子,但我有点困惑。
【问题讨论】:
标签: c++ templates boost containers boost-multi-index