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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QHash глючит  (Прочитано 2052 раз)
Fuelen
Гость
« : Март 28, 2014, 22:02 »

Есть вот такой код
Код:
for(dim = 1; dim <= ui->dimBox->value() && ui->stopButton->isEnabled(); dim ++)
    {
        for(step = 1; step <= ui->speedBox->value(); step++){
            //spin_motor();
            current_step++;
        }
        //это просто генерируется значение
        float megaval = (current_step*ui->deg_per_stepSpinBox->value()-100)*(current_step*ui->deg_per_stepSpinBox->value()-100)/40+50+(qrand() % 9 - 2);
        data.insert(current_step, megaval);
        QCoreApplication::processEvents();
    }
    //вот тут проверяем то, что только что внесли
    QHashIterator<int, int> i(data);
    while (i.hasNext()) {
         i.next();
         qDebug() << i.key() << "  " << i.value();
    }
}

Так вот, если  ui->speedBox->value() больше единицы, то когда вывожу данные из data, то данные какие-то левые. Сначало думал, что просто перемешиваются, а нет... если  ui->speedBox->value() равно 1, то всё хорошо.
Вот данные ключ-значение, если равно 1
Код:
1    303 
2    304
3    299
4    304
5    300
6    305
7    299
8    297
9    303
10    304
а вот если равно 11
Код:
88    287 
55    294
22    302
110    292
77    290
44    299
11    302
99    293
66    298
33    295

я уже и непосредственно перед записью данные выводил для проверки, входят данные нормальные, выходит мусор.
думал может с циклом что-то не то, тыкал просто несколько раз под ряд current_step++; current_step++; в надежде на чудо ... и дальше мусор.
что я не так делаю?
« Последнее редактирование: Март 28, 2014, 22:03 от Fuelen » Записан
OKTA
Гость
« Ответ #1 : Март 28, 2014, 22:17 »

QHash is unordered, so an iterator's sequence cannot be assumed to be predictable. If ordering by key is required, use a QMap.
« Последнее редактирование: Март 28, 2014, 22:20 от OKTA » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4746



Просмотр профиля WWW
« Ответ #2 : Март 28, 2014, 22:20 »

ты вставляешь в хэш float, а прочитать итератором пытаешься int
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Fuelen
Гость
« Ответ #3 : Март 29, 2014, 07:19 »

ты вставляешь в хэш float, а прочитать итератором пытаешься int
Если переводить в int перед вставкой, то результат аналогичный.


OKTA, большое спасибо,работает Веселый
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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