Russian Qt Forum
Ноябрь 26, 2024, 00:22 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QMap сравнение и удаление  (Прочитано 3942 раз)
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 пока не остануться уникальные.
            }
        }
    }
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Апрель 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;
 
Записан
Hellrider
Гость
« Ответ #2 : Апрель 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"
Записан
mutineer
Гость
« Ответ #3 : Апрель 05, 2013, 16:34 »

it->first замени на it.key(), а it->second на it.value()
Записан
Hellrider
Гость
« Ответ #4 : Апрель 05, 2013, 16:42 »

Спасибо взлетело  Смеющийся . Вот бы еще понять зачем typedef и т.д. а не простой итератор
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Апрель 05, 2013, 16:45 »

Спасибо взлетело  Смеющийся . Вот бы еще понять зачем typedef и т.д. а не простой итератор
typedef не создает новых типов, это просто синоним чтобы не писать длинную соплю
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.145 секунд. Запросов: 22.