Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.97/35: Рейтинг темы: голосов - 35, средняя оценка - 4.97
20 / 20 / 2
Регистрация: 28.11.2012
Сообщений: 366

Структура в качестве ключа QMap

02.02.2015, 17:37. Показов 7496. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вопрос такой, можно ли в качестве ключа в QMap поместить струткуру?
К примеру:
C++ (Qt)
1
2
3
4
5
6
7
struct Dual
{
    int a,b;
    Dual(int c, int d){ a = c; d = b;}
};
 
QMap<Dual, another_struct>anymap;
При компиляции выдается ошибка,
no match for 'operator<' in 'key1 < key2'
не задан 'operator <', хорошо, переопределяем 'operator <'...
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
struct Dual
{
    int a,b;
    Dual(int c, int d){ a = c; d = b;}
 
    bool operator <(const Dual & e)
    {
        if(a == e.a)
        {
            return b > e.b;
        }
        else
        {
            return a>e.a;
        }
    }
};
При компиляции эта конструкция мне выдает ошибку:
passing 'const Dual' as 'this' argument of 'bool Dual::operator<(const Dual&)' discards qualifiers
А тут я что зделал не так? В чем ошибка?

 Комментарий модератора 
Еще одна тема с названием на английском и не раскрывающем суть вопроса, получишь предупреждение
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.02.2015, 17:37
Ответы с готовыми решениями:

QMap поиск ключа по значению
Доброго времени суток! Конечно вопрос с извратим но все же. Есть значение QTcpSocket(0x7fa45668fb30) есть QMap &lt;int,...

Пройтись по каждому элементу ключа QMap
Привет. Как мне пройтись по каждому элементу каждого ключа в QMap, если мне нельзя сюда поставить итератор &quot;???&quot; for (QObject...

QMap - как задать собственный функтор проверки уникальности ключа ?
Привет. Хочу в QMap в качестве ключа засунуть структуру с множеством полей. Как задать QMap-у правила проверки уникальности? P.S.: В...

23
137 / 107 / 23
Регистрация: 06.10.2008
Сообщений: 451
18.11.2016, 13:30
Студворк — интернет-сервис помощи студентам
А если оставить структуру только в библиотеке?
0
20 / 20 / 2
Регистрация: 28.11.2012
Сообщений: 366
18.11.2016, 14:58  [ТС]
Цитата Сообщение от mevn Посмотреть сообщение
А если оставить структуру только в библиотеке?
Но в программе эта структура используется и работает уже годами...
В принципе можно.
Но! Вопрос чисто практический.
Как передать QMap с пользовательским типом данных(структурой) в качестве значения, через функцию?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
18.11.2016, 16:27
Xantrax, делай как mevn говорит. Структура должна быть описана в mylibrary.h вместе с функциями.
0
 Аватар для Wyn
1073 / 654 / 230
Регистрация: 14.01.2016
Сообщений: 2,031
Записей в блоге: 9
20.11.2016, 22:55
Xantrax, если так сильно жмёт, то можно использовать reinterpret_cast или проксю. Но это быдлокод. По хорошему надо как сказали выше, использовать объявление библиотеки.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.11.2016, 22:55

Структура в качестве ключа для map
Доброго времени суток. Имеется простая структура struct coordinateSet { public: coordinateSet(char *X,int *Y) {

Создать программу, в которой словарь будет принимать в качестве ключа значения счётчика, а в качестве значения, то,
Создать программу, в которой словарь будет принимать в качестве ключа значения счётчика, а в качестве значения, то, что введет...

MAP в качестве ключа
Есть map&lt;string, map&lt;Language, string&gt; lang; map&lt;string, map&lt;Language, string&gt; &gt;::iterator itr = langHashtable.find(keyLabe); Нахожу...

Map. 0 в качестве ключа [0]
Если создать словарь map и в качестве ключа использовать целые числа. Почему нельзя использовать ключ 0 ? Когда пытаешься вывести, выдает...

В качестве ключа массива переменная
Есть массив $Tasks=array('Николай'=&gt;array('work1'=&gt;'Настройка роутера','data1'=&gt;'26.01.2019','time1'=&gt;'8:00', ...


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

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru