У меня есть упорядоченный набор карт ключ / значение в векторе, через который я перебираю.Я знаю уникальный ключ, и на основании этого мне нужно получить пары ключ / значение до и после него, пока я не достигну предела.Например:
QVector < QMap < QString, QString > > map;
QMap < QString, QString > temp;
temp.insert("key1", "parent");
map.append(temp);
temp.clear();
temp.insert("key2", "value1");
map.append(temp);
temp.clear();
temp.insert("key3", "value2");
map.append(temp);
temp.clear();
temp.insert("key4", "value3");
map.append(temp);
temp.clear();
temp.insert("key5", "parent");
map.append(temp);
Допустим, у меня есть значение «key3», и я хочу получить пары ключ / значение до «key3», пока не будет достигнут «parent», а после - до «parent»достигнут (не включая «родитель»), как мне это сделать?Я не могу придумать простой способ.
QMap < QString, QString > newMap;
QMap < QString, QString >::iterator i;
for (int i = 0; i < map.size(); ++i) {
QMap < QString, QString > vectorMap = map.at(i);
for (j = vectorMap.begin(); j != vectorMap.end(); ++j) {
if (j.key() == "key3") {
//set a bool to true and
//get j.key() and j.value() before and after until "parent" is reached
newMap.insert(j.key(), j.value());
}
}
}
NewMap будет иметь пары ключ / значение ("key2 / value1", "key3 / value2", "key4 / value3");
Отредактировано для того, что я сейчас пытаюсь:
QString selection = "key3";
//for going backwards, still need to go forward
for (int i = 0; i < map.size(); ++i) {
QMap < QString, QString > vectorMap = map.at(i);
QMapIterator < QString, QString > iter(vectorMap);
while (iter.hasNext()) {
iter.next();
if (iter.key() == selection && iter.value() != "parent") {
do {
previousText = iter.previous();
tempMap.insert(iter.key(), iter.value());
newMap.append(tempMap);
tempMap.clear();
qDebug() << "previousText" << previousText;
iter.previous();
} while (previousText != "parent");
}
}
}