在 C++ map 中,哪个更适合 usage/perfomance 并符合指南,使用 find_if 或 find then 和 .at
In C++ map, which is better for usage/perfomance and conforms to the guidelines, using find_if or find then and .at
我正在使用 C++ 映射,我需要在其中搜索一个元素,然后获取该元素(如果存在)。
第一种方法是使用 find
if (mymap.find(mykey) == mymap.end())
{
//return error code
return ERROR_CODE;
}
else
{
value = mymap.at(mykey).second;
return SUCCESS_CODE;
}
第二种方法:
auto iter= find_if(mymap.begin(), mymap.end(), [&key](auto &item){return item.first == key;})
if(iter == mymap.end())
{
return ERROR_CODE;
}
else
{
value = iter->second;
return SUCCESS_CODE;
}
是否有任何技术考虑或指南(如 cpp 指南)提到类似的东西,哪种方式更好?
你不应该使用线性的 std::find_if
,而你可能有对数时间的迭代器。你可能会
auto it = mymap.find(mykey)
if (it == mymap.end())
{
//return error code
return ERROR_CODE;
}
else
{
value = it->second;
return SUCCESS_CODE;
}
我正在使用 C++ 映射,我需要在其中搜索一个元素,然后获取该元素(如果存在)。
第一种方法是使用 find
if (mymap.find(mykey) == mymap.end())
{
//return error code
return ERROR_CODE;
}
else
{
value = mymap.at(mykey).second;
return SUCCESS_CODE;
}
第二种方法:
auto iter= find_if(mymap.begin(), mymap.end(), [&key](auto &item){return item.first == key;})
if(iter == mymap.end())
{
return ERROR_CODE;
}
else
{
value = iter->second;
return SUCCESS_CODE;
}
是否有任何技术考虑或指南(如 cpp 指南)提到类似的东西,哪种方式更好?
你不应该使用线性的 std::find_if
,而你可能有对数时间的迭代器。你可能会
auto it = mymap.find(mykey)
if (it == mymap.end())
{
//return error code
return ERROR_CODE;
}
else
{
value = it->second;
return SUCCESS_CODE;
}