簡體   English   中英

如何將鍵值對插入到新的 unordered_map<int, int> *(指針)在 C++ 中?</int,>

[英]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.

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