Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/21: Рейтинг темы: голосов - 21, средняя оценка - 4.62
15 / 13 / 4
Регистрация: 23.08.2017
Сообщений: 187
1

Перебор 2х std::map и сравнение

07.07.2019, 00:37. Показов 3925. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Суть задачи, выяснить что больше сравнивая данные в двух std::map.

Есть map a,b всегда одинакового размера, в них хранятся данные. Я могу вывести в цикле отдельно каждый.


C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
    std::map<int, double> a, b;
    
    a.emplace(1, 5.12);
    a.emplace(2, 7.13);
    
    b.emplace(1, 1.01);
    b.emplace(2, 9.4);
    
    for(auto &it_a : a)
        cout << it_a.second << endl;
    
    for(auto &it_b : b)
        cout << it_b.second << endl;
Но мне нужно сравнить a.second с b.second и где больше вывести это число

что-то вроде
C++ (Qt)
1
2
3
4
for(auto &it : a,b  )
{
  if(it.a.second > it.b.second) cout "a>b";
}
Но при этом не копируя их отдельно в другой массив типа double tmp_a[500], double tmp_b[500]. Скорость очень важна.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.07.2019, 00:37
Ответы с готовыми решениями:

Возможно ли создать контейнер std::map, в котором в качестве значения была бы ссылка на std::map?
Здравствуйте. Возможно ли создать контейнер std::map, в котором в качестве значения была бы...

Emplace в std::map. Как добавить элемент в std::map без копирования?
здравствуйте... есть ли способ не писать так: std::map&lt;int, char&gt; ksa;...

Очистка map и перевернутого std::map c std::greater
Написала я программу, которая заполняет два контейнера map. a,b. вывод программы такой 11 a:...

std::map, std::vector и порядок обхода коллекции
Здравствуйте, уважаемые! Вопрос следующий - если я сохраняю какие-то значения в map или вектор, то...

2
90 / 88 / 33
Регистрация: 20.07.2016
Сообщений: 403
07.07.2019, 00:43 2
Лучший ответ Сообщение было отмечено helena_1990 как решение

Решение

учитывая, что размеры карт одинаковы:
C++
1
2
3
for (auto it1 = a.cbegin(), it2 = b.cbegin(); it1 != a.cend(); ++it1, ++it2)
  if (it1->second > it2->second)
    std::cout << "a > b";
1
15 / 13 / 4
Регистрация: 23.08.2017
Сообщений: 187
07.07.2019, 00:58  [ТС] 3
Цитата Сообщение от JIawliet Посмотреть сообщение
учитывая, что размеры карт одинаковы:
То что надо, спасибо!
0
07.07.2019, 00:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.07.2019, 00:58
Помогаю со студенческими работами здесь

Стоит ли очищать в деструкторе std::map , std::vecotor?
У меня ещё один нубский вопрос :) Вот если в классе объявлены мапы и вектора, которые по ходу...

Std::unordered_multimap<std::string, int> map
Приветствую. Как можно получить только &quot;уникальный&quot; ключ в контейнере? ...

Потокобезопасность std::map::end, std::list::end
Собсна сабж, могу ли я без синхронизаций выполнять подобного рода код if (myIter != map.end()) //...

Не могу разобраться как обновить в std::map<std::string, вектор_структур>
Не могу разобраться как обновить вектор структур после его добавления в map без удаления и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru