如何重命名QMap的Key?

时间:2017-06-08 10:43:40

标签: qt key-value keyvaluepair qmap

我有QMap<int, myDB> myTable这样的

(1, {something0})
(3, {something1})
(5, {something2})
(8, {something3})

如何更改myTable的密钥,第一个密钥从0开始?

(0, {something0})
(1, {something1})
(2, {something2})
(3, {something3})

1 个答案:

答案 0 :(得分:3)

您无法直接在原始地图中更改密钥,而是创建其他地图,使用重新组织的密钥将值分配给其他地图,然后使用QMap::swap替换原始地图项目。这些片段看起来像

//Make sure myDB is assignable
QMap<int, myDB> other;
QList<int> keys = myTable.uniqueKeys();
for (int k = 0; k < keys.length(); k++) {
    int key = keys[k];

    //We're using insertMulti in case
    //we have multiple values associated to single key
    QList<myDB> values = myTable.values(key);
    for (int j = 0; j < values.length(); j++) {
        other.insertMulti(k, values.at(j));
    }
}
myTable.swap(other);