Я пытаюсь использовать библиотеку хронологии STL в C++ 11 для измерения продолжительности цикла. Таким образом, я пытаюсь сделать что-то выглядит следующим образом:сравнение результатов STL chrono с плавающей запятой
using std::chrono;
double frame_time = 40; // Temporal resolution milliseconds
auto start = high_resolution_clock::now();
while (get_frame(frame)) {
// Do something
auto end = high_resolution_clock::now();
auto elapsed = duration_cast<milliseconds>(end - start);
// Now I want to do something like:
if (elapsed < frame_time) { sleep(frame_time-elapsed);}
start = high_resolution_clock::now();
}
Однако, что результаты сравнения в ошибки, как:
no match for ‘operator<’ (operand types are ‘std::chrono::duration<long
int, std::ratio<1l, 1000l> >’ and ‘double’)
Извините, бит путают. frame_time здесь является переменной типа double. Вы имеете в виду преобразовать его в тип продолжительности? – Luca
нет, не конвертировать. Не используйте 'double' в первую очередь. Сделайте 'frame_time' переменной переменной' миллисекунды'. –
Ahhhh ... Понятно. Я немного упростил это. Frame_time на самом деле происходит из стороннего lib, и это возвращает его как double. Я поставил его на какое-то твердое значение, чтобы подчеркнуть мою проблему. – Luca