从具有自定义类型的 C++ 中的 std::map 中获取值

get value from std::map in c++ which has custom type

本文关键字:std map 获取 中的 C++ 自定义 类型      更新时间:2023-10-16

我已经将地图初始化为:

typedef void*   ProxyClientHandler;
std::map<string,ProxyClientHandler> connectedClient;

我正在将值插入到这张地图中,作为

ProxyClientHandler client;
string device;
connectedClient.insert ( std::pair<string,ProxyClientHandler>(device,client) );

到目前为止,没有错误返回。

但是当我要访问给定相关键的值时,

作为
string deviceId; 
ProxyClientHandler client = connectedClient.find(deviceId);

它给了我一个错误:

错误:无法将参数"1"的"std::map, void*>::iterator {aka std::_Rb_tree_iterator, void*>>}' 转换为参数 '1' 的 'ProxyClientHandler {aka void*}' 到 'int DHProxyClientDelPort(ProxyClientHandler, int('

如何解决此问题???

std::map::find()返回迭代器,通常你可以这样使用它:

auto it = map.find( key );
if( it == map.end() ) {
   // key not found
}
ProxyClientHandler client = it->second;

find返回一个迭代器。

std::map<string,ProxyClientHandler>::iterator it = connectedClient.find(deviceId);

或者,如果您验证(或仅通过代码的逻辑知道(具有键deviceId的元素位于map内,则应使用[]

ProxyClientHandler client = connectedClient[deviceId];