如何在 C++ 中将键值对插入到 new unordered_map<int, int>*(指针)?

How to insert key value pairs to new unordered_map<int, int>* (pointer) in C++?

我在结构中有一个 unordered_map 指针,因为我需要它在共享内存中以便在程序运行时访问和修改。

struct Umaps {std::unordered_map<int, int> *node_index;} ;

然后我在另一个函数中初始化 unordered_map、node_index。

Umapsptr->node_index = new std::unordered_map<int, int>();

其中 Umapsptr 是指向我函数中 Umaps 结构的指针。然后我尝试将值插入 unordered_map.

Umapsptr->node_index[5] = 10;

但是我收到这个错误,我不知道如何解决它:

错误:“operator=”不匹配(操作数类型为“std::unordered_map”和“int”) umapsptr->node_index[5] = 10;

我做错了什么?任何帮助将不胜感激。

[] 应用于指针进行指针运算。您想要将 [] 应用于指向的对象,因此您需要显式取消引用指针:

(*Umapsptr->node_index)[5] = 10;

如果您知道键 5 已经在映射中,您可以使用 at 代替:

Umapsptr->node_index->at(5) = 10;

但是如果密钥不存在,这将引发异常。如果您知道密钥不存在,您可以使用 emplace:

Umapsptr->node_index->emplace(5, 10);

但是如果密钥已经存在且具有不同的值,这将不会执行任何操作。