如何在 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);
但是如果密钥已经存在且具有不同的值,这将不会执行任何操作。
我在结构中有一个 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
我做错了什么?任何帮助将不胜感激。
将 []
应用于指针进行指针运算。您想要将 []
应用于指向的对象,因此您需要显式取消引用指针:
(*Umapsptr->node_index)[5] = 10;
如果您知道键 5
已经在映射中,您可以使用 at
代替:
Umapsptr->node_index->at(5) = 10;
但是如果密钥不存在,这将引发异常。如果您知道密钥不存在,您可以使用 emplace:
Umapsptr->node_index->emplace(5, 10);
但是如果密钥已经存在且具有不同的值,这将不会执行任何操作。