2016-02-15 2 views

ответ

1

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;}); 
+0

Спасибо за ваш ответ. Я уже понял это, как заявил в своем ответе. Принято для подробного ответа. – mkmostafa

0

В основном разница между использований и (насколько я понял, заключается в следующем):

  • Изменить:

    Функтор передается ссылка на целом объект, который был извлечен, и функтор может изменить любой из членов этого извлеченного объекта.

  • modify_key:

    функтор изменяет только ключ, который используется при поиске и извлечении объекта. Например, используя индекс с именем , член класса для поиска в контейнере, после применения модификации на возвращенном итераторе, член имени будет изменен.

В основном модификация_key - это особый случай от модификации.

Смежные вопросы