地图数组有助于c ++ / qt

时间:2010-11-16 22:56:37

标签: c++ qt4

我不知道我是否正确这样做,c ++不是我的母语。

QMap < QString, QString > *mapArray;
QMap < QString, QString > map[10];
mapArray = map;

mapArray[0].insert("key1", "value1");
mapArray[0].insert("key1-1", "value1-1");
mapArray[1].insert("key2", "value2");
mapArray[2].insert("key3", "value3");
mapArray[2].insert("key3-1", "value3-1"); ...

现在我想迭代整个mapArray。这样做的最佳方式是什么?

2 个答案:

答案 0 :(得分:2)

您不需要指针。摆脱它,只需在其位置使用map

QMap < QString, QString > map[10];

map[0].insert("key1", "value1");
map[0].insert("key1-1", "value1-1");
map[1].insert("key2", "value2");
map[2].insert("key3", "value3");
map[2].insert("key3-1", "value3-1"); ...

要遍历它们,你需要遍历数组,然后遍历地图。

for (int i = 0; i < 10; ++i)
{
    for (QMap<QString, QString>::iterator it = map[i].begin(); it != map[i].end(); ++it)
    {
         const QString& key = it->first;
         QString& value = it->second;
         ...
    }
}

如您所见,QMap迭代器是键和值的QPair。您可以使用上面的firstseconds单独检索它们。

答案 1 :(得分:1)

没有。你似乎把事情变得比必要的复杂得多。至少从事物的外观来看,你不需要指针或数组,只需要一个QMap对象:

QMap<QString, QString> map;

map.insert("Key1", "value1");
map.insert("Key1-1", "value1-1");
map.insert("key2", "value2");

QMap<QString, QString>::const_iterator pos;

for (pos=map.constBegin(); pos!=map.constEnd(); ++pos)
    std::cout << pos.key() << ": " << pos.value() << "\n";