我写了一个小函数,其目的是按顺序遍历元素列表,对它的hashmap值进行一些检查,如果它们通过,则返回它。
QString ElementContainer::getPreferedAvailableElement() const
{
QStringList preferred_priority = { A, B, C, D, E };
foreach(QString element, preferred_priority){
Element* data = m_hashmap.value(element, nullptr);
if(data && data->isReady()){
return element;
}
}
return QString("");
}
我知道,无论有意义与否,都不应强制使用这些功能类型的std函数。我只是很好奇您如何改变它,如果它更冗长。
您可以像这样使用std::find_if
:
QString ElementContainer::getPreferedAvailableElement() const
{
QStringList preferred_priority = { A, B, C, D, E };
auto it = std::find_if(preferred_priority.begin(),
preferred_priority.end(),
[this](const QString & element)
{
Element* data = m_hashmap.value(element, nullptr);
return (data && data->isReady());
});
if (it != preferred_priority.end())
{
return *it;
}
return QString("");
}