我试图找到实现使用多个键返回一个值的类似 QHash 的查找表的最佳方法。我读过 Boost 库具有类似的功能,但如果可能的话,我想避免这种情况。
我想做的一个例子如下(显然下面的伪代码是不可能的):
//First key (int) - Engine cylinders
//Second key (int) - Car weight
//Value (int) - Top speed
MyLookup<int, int, int> m_Lookup
m_Lookup.insert(6, 1000, 210);
m_Lookup.insert(6, 1500, 190);
m_Lookup.value(6, 1000); //Returns 210
我的第一个(也是非常慢的)想法是创建一个结构,然后遍历一个列表,直到找到一个符合条件的项目。
Struct Vehicle {
int cyl;
int weight;
int speed'
}
QList<Vehicle> carList; //Assume this is populated
for(i = 0; i < carList.length; ++i) {
if(carList[i].cyl == 6 && carList[i].weight == 1000) {
return carList[i].speed; } }
我的另一个想法是将两个键连接成一个键,并在需要时实现几个函数来组合和分离两个键。虽然这会起作用,并且可能比完整迭代快得多,但它似乎有点被破解了。
QHash<QString, int> m_Lookup;
m_Lookup.insert("6|1000", 210);
有谁知道尝试实现这一目标的更好方法?