我不知道我是否正确这样做,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。这样做的最佳方式是什么?
答案 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
。您可以使用上面的first
和seconds
单独检索它们。
答案 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";