Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Hellrider от Апрель 05, 2013, 15:52



Название: QMap сравнение и удаление
Отправлено: Hellrider от Апрель 05, 2013, 15:52
Ситуация такая - есть 3 QMap<QUrl, QString> в первом новые значения, во втором старые значения, потом нужно сравнить(по ключу QUrl) новые со старыми и выделить только те значения которые не совпадают со старыми (например в первом мапе 12345, во втором 123) и записать значения 45 в третий мап. Подскажите как реализовать механизм, пробовал сравнивать в циклах но не взлетает. Вот пример как пытался делать
Код:
QMap<QUrl, QString>::iterator it1 = cache1.begin();
    QMap<QUrl, QString>::iterator it2 = cache2.begin();
newListOrder = cache1; // третий мап
    for(; it1 != cache1.end(); ++it1){
        for(; it2 != cache2.end(); ++it2){
            if(it1.key() == it2.key()){
                newListOrder.remove(it1.key()); // пытаюсь удалять все одинаковые значения из newListOrder пока не остануться уникальные.
            }
        }
    }


Название: Re: QMap сравнение и удаление
Отправлено: Igors от Апрель 05, 2013, 16:02
Код
C++ (Qt)
typedef QMap<QUrl, QString> TMap;
for (TMap::iterator it = cache1.begin(); it != cache1.end(); ++it)
if (cache2.find(it->first) == cache2.end())
 cache3[it->first] = it->second;
 


Название: Re: QMap сравнение и удаление
Отправлено: Hellrider от Апрель 05, 2013, 16:31
Код
C++ (Qt)
typedef QMap<QUrl, QString> TMap;
for (TMap::iterator it = cache1.begin(); it != cache1.end(); ++it)
if (cache2.find(it->first) == cache2.end())
 cache3[it->first] = it->second;
 


Выводит ошибку first: не является членом "QString" и second: не является членом "QString"


Название: Re: QMap сравнение и удаление
Отправлено: mutineer от Апрель 05, 2013, 16:34
it->first замени на it.key(), а it->second на it.value()


Название: Re: QMap сравнение и удаление
Отправлено: Hellrider от Апрель 05, 2013, 16:42
Спасибо взлетело  ;D . Вот бы еще понять зачем typedef и т.д. а не простой итератор


Название: Re: QMap сравнение и удаление
Отправлено: Igors от Апрель 05, 2013, 16:45
Спасибо взлетело  ;D . Вот бы еще понять зачем typedef и т.д. а не простой итератор
typedef не создает новых типов, это просто синоним чтобы не писать длинную соплю