地图数组帮助c++;/qt 我不知道我是否做对了,C++不是我的母语。

地图数组帮助c++;/qt 我不知道我是否做对了,C++不是我的母语。,c++,qt4,C++,Qt4,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", "val

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"); ...
QMap*mapArray;
QMapmap[10];
mapArray=map;
mapArray[0]。插入(“键1”、“值1”);
mapArray[0]。插入(“键1-1”、“值1-1”);
mapArray[1]。插入(“键2”、“值2”);
mapArray[2]。插入(“键3”、“值3”);
mapArray[2]。插入(“键3-1”、“值3-1”)。。。

现在我想遍历整个mapArray。最好的方法是什么?

您不需要指针。摆脱它,只需使用
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"); ...
QMapmap[10];
映射[0]。插入(“键1”、“值1”);
映射[0]。插入(“键1-1”、“值1-1”);
映射[1]。插入(“键2”、“值2”);
地图[2]。插入(“键3”、“值3”);
映射[2]。插入(“键3-1”、“值3-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;
         ...
    }
}
for(int i=0;i<10;++i)
{
对于(QMap::iterator it=map[i].begin();it!=map[i].end();+it)
{
const QString&key=it->first;
QString&value=it->second;
...
}
}

如您所见,
QMap
迭代器是键和值的
QPair
。您可以像上面一样使用
第一个
第二个
分别检索它们。

您不需要指针。摆脱它,只需使用
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"); ...
QMapmap[10];
映射[0]。插入(“键1”、“值1”);
映射[0]。插入(“键1-1”、“值1-1”);
映射[1]。插入(“键2”、“值2”);
地图[2]。插入(“键3”、“值3”);
映射[2]。插入(“键3-1”、“值3-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;
         ...
    }
}
for(int i=0;i<10;++i)
{
对于(QMap::iterator it=map[i].begin();it!=map[i].end();+it)
{
const QString&key=it->first;
QString&value=it->second;
...
}
}

如您所见,
QMap
迭代器是键和值的
QPair
。你可以像我上面所说的那样,使用
第一次
第二次
分别检索它们。

不。你似乎把事情弄得比必要的复杂得多。至少从外观上看,您不需要指针或数组,只需要一个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";
QMap;
地图。插入(“键1”、“值1”);
地图。插入(“键1-1”、“值1-1”);
地图。插入(“键2”、“值2”);
QMap::const_迭代器位置;
对于(pos=map.constBegin();pos!=map.constEnd();++pos)

不,你似乎把事情弄得太复杂了。至少从外观上看,您不需要指针或数组,只需要一个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";
QMap;
地图。插入(“键1”、“值1”);
地图。插入(“键1-1”、“值1-1”);
地图。插入(“键2”、“值2”);
QMap::const_迭代器位置;
对于(pos=map.constBegin();pos!=map.constEnd();++pos)

std::cout当你迭代数组时,你需要键和值,还是只需要值?当你迭代数组时,你需要键和值,还是只需要值?我实际上使用的是映射数组,因为有子菜单链接到每个mapArray[X]。@uer375566:它仍然不是(根本不是)我很清楚,你需要一系列地图。由于您(至少在本例中)保持了密钥的整体唯一性,因此您可以/显然可以为所有密钥使用一个映射。实际上,我使用的是映射数组,因为每个映射数组[X]都有子菜单链接。@uer375566:我(根本)不清楚您是否需要一个映射数组。由于您(至少在本例中)保持了密钥的整体唯一性,因此您可以/显然可以为所有密钥使用一个映射。