【发布时间】:2020-09-11 06:17:09
【问题描述】:
我写了一个小函数,其目的是按顺序遍历一个元素列表,对它的 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 函数不应该被强制使用,无论它是否有意义。我只是好奇你如何改变它,如果它可能更冗长。
【问题讨论】:
-
能否请您重新表述您的问题?目前尚不清楚您要实现什么目标,到目前为止您做了什么以及存在什么问题。
-
您似乎正在c++03 中编写代码,这是它的 Qt 变体(带有各种宏)。这是对解决方案的限制吗?
-
@Hack06 我试图实现的目标:找到与 isReady 标准匹配的 hashmap 的第一个元素,按照 Preferred_priority 列表的顺序进行。到目前为止我所做的已经在上面列出,这是一种天真的方式。我的问题是,是否有一种更易读、更详细、更简洁的方式来写这篇文章。
-
@Yakk-AdamNevraumont 它确实是带有 C++11 的 Qt 变体。 QStringList 中的元素不是宏而是常量。我猜应该没关系。
-
例如,@Curunir
foreach是一个 QT 宏。在 C++11 中不需要它:for(QString element:preferred_priority)是一个无宏示例。