QHash<QPointF, QVector<float>> data;
此时会报错说没有声明QPointF的Key类型
需要我们手动实现一个函数
static uint qHash(const QPointF& key, uint seed) { int val = static_cast<int>(key.x()); return qHash<int>(val, seed);}
数据的插入,插入QHash<QPointF, QVector<float>>类型的数据
data.insert(QPointF(0.0, 1.0), {0.0, 0.3, 0.7, 1.0}); data.insert(QPointF(1.0, 2.0), {0.0, 0.7, 1.3, 2.0}); data.insert(QPointF(2.0, 4.0), {0.0, 1.3, 2.7, 4.0}); data.insert(QPointF(4.0, 6.0), {0.0, 2.0, 4.0, 6.0});
数据的查找 输入一个浮点型数,判断这个浮点型数在不在Key的区间,如果在,就返回Value
QVector<float> ClassName::getDataValue(qreal maxValue, QHash<QPointF, QVector<float>> &data) { for (QHash<QPointF, QVector<float>>::iterator it = data.begin(); it != data.end(); ++it) { if ((it.key().x() < maxValue) && (maxValue < it.key().y() + FLOAT_ACCURACY)) { return it.value(); } } return QVector<float>();}
FLOAT_ACCURACY:0.00001;用来浮点型数据的比较
转载于:https://www.cnblogs.com/qianqiannian/p/9585741.html
