gpt4 book ai didi

c++ unordered_map emplace 无效参数

转载 作者:行者123 更新时间:2023-11-30 03:38:47 24 4
gpt4 key购买 nike

如果我有这张 map

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(...)&& ...)'我不明白为什么会这样。感谢您提供任何帮助。

最佳答案

What's a better way to write it then?

这是一个无序映射,将一些标识符映射到多个套接字。

在 BSD 套接字中,套接字描述符是一个 int(或至少可转换为 int),所以让我们继续使用它。

似乎每个标识符关联的套接字不止一个。这支持 vector 。

所以:

using socket_vector = std::vector<int>;

using ident_to_sockets = std::unordered_map<std::string, socket_vector>;

现在我们可以将套接字附加到每个标识:

sockets[ident].push_back(sock);

关于c++ unordered_map emplace 无效参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39294748/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com