QListWeldData _weldDataListstruct WeldData QString key; QString name; QString type; QVariant value; WeldDataconst QString& key = QString const QString& name = QStri
可以使用Qt的STL风格的算法中的std::find_if函数来实现:
QList<WeldData>::const_iterator it = std::find_if(_weldDataList.constBegin(), _weldDataList.constEnd(), [key](const WeldData& wd) { return wd.key == key; });
if (it != _weldDataList.constEnd()) {
QVariant value = it->value;
// do something with the value
}
这里使用了一个Lambda表达式作为std::find_if函数的第三个参数,用于指定查找条件。Lambda表达式中的[key]表示将外部变量key捕获到Lambda表达式中,以便在Lambda表达式中使用。Lambda表达式中的返回值是一个bool类型的值,用于指示当前元素是否符合查找条件。在这个Lambda表达式中,我们比较当前元素的key值和外部变量key的值是否相等,如果相等则返回true,否则返回false。如果std::find_if函数找到了符合条件的元素,则返回该元素的迭代器,否则返回_end迭代器。我们可以通过判断返回的迭代器是否等于_end迭代器来判断查找是否成功。如果查找成功,则可以通过迭代器访问该元素的value值。
原文地址: https://www.cveoy.top/t/topic/bYEl 著作权归作者所有。请勿转载和采集!