![](/img/trans.png)
[英]C++ Updating values in a unordered_map, where the data type of key-value pair is int-unordered_set
[英]How to insert key value pairs to new unordered_map<int, int>* (pointer) in C++?
我在結構中有一個 unordered_map 指針,因為我需要它在共享 memory 中,以便在程序運行時訪問和修改。
struct Umaps {std::unordered_map<int, int> *node_index;} ;
然后我在另一個 function 中初始化 unordered_map,node_index。
Umapsptr->node_index = new std::unordered_map<int, int>();
其中 Umapsptr 是指向我的 function 中的 Umaps 結構的指針。 然后我嘗試將值插入到 unordered_map。
Umapsptr->node_index[5] = 10;
但是我收到了這個錯誤,我不知道如何解決它:
錯誤:'operator=' 不匹配(操作數類型是 'std::unordered_map<int, int>' 和 'int') Umapsptr->node_index[5] = 10;
我究竟做錯了什么? 任何幫助將不勝感激。
將[]
應用於指針會執行指針運算。 您想將[]
應用於指向 object,因此您需要顯式取消引用指針:
(*Umapsptr->node_index)[5] = 10;
如果您知道密鑰5
已經在 map 中,您可以使用at
代替:
Umapsptr->node_index->at(5) = 10;
但如果密鑰不存在,這將引發異常。 如果您知道密鑰不存在,則可以使用 emplace:
Umapsptr->node_index->emplace(5, 10);
但如果密鑰已經存在不同的值,這將無濟於事。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.