【发布时间】:2016-09-02 14:24:24
【问题描述】:
如果我有这张地图
std::unordered_map<std::string, int*> sockets; //a map holding all active sockets
我怎么能这样:
sockets[_myId]=(int*)lp; //all ok - insert succeeds
但我不能这样做:
if(!sockets.emplace(_myId,(int*)lp).second) { /*insert failed, act accordingly*/ }
无效参数' 候选人是: ?就位(#10000(...)&& ...) ' 我不明白为什么会这样。感谢您的帮助。
【问题讨论】:
-
尝试sockets.emplace(std::make_pair (_myId,(int*)lp))
-
@vadikrobot emplace 在这种情况下将采用 2 个参数 - 键和值。您正在考虑插入。
-
无法复制,适合我。
std::unordered_map<std::string, int*> sockets; bool foo(const char *p, int n) { return sockets.emplace(p, &n).second; } -
.. 可怕的想法,c 样式转换为 c 样式指针(数组?)你不能使用套接字句柄的向量吗?
标签: c++ unordered-map emplace