基于范围的变换以实现正常循环

Transform range-based for normal loop

本文关键字:实现 循环 常循环 于范围 范围 变换      更新时间:2023-10-16
for (const auto & rRec : m_map_handshake)
{
if (rRec.second->GetHostName() == inet_ntoa(c_rSockAddr.sin_addr))
{
return true;
}
}

我有这样的代码,但基于范围的 for 循环不适用于旧的 gcc 编译器。

有什么办法可以解决这个问题吗?我不是C++方面的专家

您可以使用普通的for循环。看起来很std::map.使用迭代器遍历元素并匹配条件。

for(const <map-type>::iterator it = m_map_handshake.begin(); it != m_map_handshake.end();++it){
if (it->second->GetHostName() == inet_ntoa(c_rSockAddr.sin_addr))
{
return true;
}
}

这里<map-type>将是m_map_handshake的类型。