簡體   English   中英

C++ unordered_map emplace 使用引用作為鍵

[英]C++ unordered_map emplace using a reference as a key

在 C++ 中放入無序 map 時,我可以使用 const 引用作為鍵嗎? (它按預期編譯和運行,但我想知道引擎蓋下發生了什么)

將由 emplace 創建 const 引用的副本,還是我需要確保提到的 memory 在 map 存在之前有效?

我在哪里可以閱讀更多關於此的信息?

void func(
    const std::vector<std::string>& itemList) {
 int i = 0;
 std::unordered_map<std::string, int>itemMap;
 for (const auto& item : itemList){
  itemMap.emplace(item, i);
 }
}

實際上,

for (const auto& item : itemList){

具有以下相同的效果

for (const std::string& item : itemList){

並且emplace只需使用const std::string&在該位置創建另一個字符串。

我們更喜歡emplace而不是insert的原因是第一個只會創建一次 object 而最后一個會創建對然后將其移動到該位置。

暫無
暫無

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

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