boost multi_index_container中modify
和modify_key
之间的区别是什么?我读了他们的文件,我似乎无法找到两者的用法之间的区别。
答案 0 :(得分:2)
modify_key
是modify
的变体,当您要更改的元素的唯一部分是键本身时,可以为您节省一些输入。例如,如果我定义multi_index_container
,例如:
struct element
{
int x;
int y;
};
using namespace boost::multi_index;
using container=multi_index_container<
element,
indexed_by<
ordered_unique<member<element,int,&element::x>>
>
>;
container c=...;
然后是以下内容:
auto it=...;
c.modify(it,[](element& e){e.x=3;});
可以用modify_key
编写为
auto it=...;
c.modify_key(it,[](int& x){x=3;});
答案 1 :(得分:0)
基本上两者的用法之间的差异(据我所知,如下):
修改:
函数传递对已检索的整个对象的引用,并且仿函数可以修改此检索对象的任何成员。
Modify_Key:
仿函数仅修改用于搜索和检索对象的键。例如,使用带有 name 成员的索引来搜索容器,在返回的迭代器上应用modify_key后,名称成员将被更改。
基本上,modify_key是修改的特例。