【发布时间】:2021-04-03 03:27:24
【问题描述】:
我在结构中有一个 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
我做错了什么?任何帮助都将不胜感激。
【问题讨论】:
-
记住你的基本指针内容:如果你有一个指针
Type *p,那么p[n]会说“给我Type对象在n的偏移量n与p中保存的基地址”。简而言之,该索引是错误的。Umapsptr->node_index->at(5) = 10;会做你想做的事。 -
您所说的“共享内存”是什么?您是在谈论在进程之间或代码的不同部分之间共享内存吗?如果是前者,您将在跨进程共享这样的 C++ 对象时遇到一些麻烦。如果是后者,你真的想说“全局内存”,没问题。
-
谢谢@WhozCraig!我现在看到了。我的意思是全局内存@selbie,感谢您的更正:)
标签: c++ pointers unordered-map