我已将地图初始化为:
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);
它给了我一个错误:
错误:无法转换'std :: map,void *&gt; :: iterator {aka std :: _ Rb_tree_iterator,void *&gt; &gt;}'到'ProxyClientHandler {aka void *}'用于参数'1'到'int DHProxyClientDelPort(ProxyClientHandler,int)'
我该如何解决这个问题?
答案 0 :(得分:5)
std::map::find()
返回迭代器,通常你可以这样使用它:
auto it = map.find( key );
if( it == map.end() ) {
// key not found
}
ProxyClientHandler client = it->second;
答案 1 :(得分:0)
find
返回一个迭代器。
std::map<string,ProxyClientHandler>::iterator it = connectedClient.find(deviceId);
或者,如果您验证(或仅通过代码的逻辑知道)具有密钥deviceId
的元素位于map
内,则应使用[]
:
ProxyClientHandler client = connectedClient[deviceId];