我正在使用 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 指南)提到類似的內容,哪種方式更好?
uj5u.com熱心網友回復:
您不應該使用std::find_ifwhich 是線性的,而您可能在對數時間內使用迭代器。你可能會做
auto it = mymap.find(mykey)
if (it == mymap.end())
{
//return error code
return ERROR_CODE;
}
else
{
value = it->second;
return SUCCESS_CODE;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/425952.html
