簡體   English   中英

boost::multi_index 如何與成員函數一起工作?

[英]How does boost::multi_index work with member functions?

如果我有一個 boost::multi_index 如下,

typedef multi_index_container<
    employee,
    indexed_by<    
        hashed_unique<mem_fun<employee, std::string, &employee::getname> >,
        hashed_unique<mem_fun<employee, int, &employee::getage> >
    > 
> employee_set;

我知道插入到此容器中的“員工”類對象的存儲方式可以在 O(1) 時間內檢索到(作為哈希映射)。

在程序運行過程中更新成員變量(名稱、年齡)時(例如可能使用 setname 或 setage 之類的東西)並且仍然使用這些值進行散列,它將如何存儲? 我理解錯了嗎?

TIA

-R

文檔

每個索引提供的迭代器都是常量,即它們指向的元素不能直接變異。 這遵循std::set的有序索引接口,但對於其他類型(如序列索引)可能會令人驚訝,這些類型在std::list之后建模,在這種情況下不會發生這種限制。 這種看似奇怪的行為是由multi_index_container的工作方式強加的; 如果允許不加選擇地改變元素,我們可以在multi_index_container的有序索引中引入不一致,而不會通知容器。 元素修改通過對任何索引的更新操作來正確完成。

換句話說,除非您使用容器的更新函數,否則您只能對存儲的對象進行const訪問,此時它可以掛接到調用中並即時調整哈希值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM