gpt4 book ai didi

c++ - 在STL容器中优先搜索的C++优雅方式

转载 作者:行者123 更新时间:2023-12-02 10:02:23 24 4
gpt4 key购买 nike

我写了一个小函数,目的是按顺序遍历元素列表,对它的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("");
}

关于c++ - 在STL容器中优先搜索的C++优雅方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61988357/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com