Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
STL chrono结果与浮点值的比较 我尝试使用C++ 11中的STL计时库来测量循环的持续时间。因此,我正在尝试做以下事情: 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(); } 使用std::chrono; 双帧时间=40;//时间分辨率毫秒 自动启动=高分辨率时钟::现在(); while(获取_帧(帧)){ //做点什么 自动结束=高分辨率时钟::现在(); 自动运行时间=持续时间(结束-开始); //现在我想做一些类似的事情: 如果(经过_C++_Stl_Chrono - Fatal编程技术网

STL chrono结果与浮点值的比较 我尝试使用C++ 11中的STL计时库来测量循环的持续时间。因此,我正在尝试做以下事情: 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(); } 使用std::chrono; 双帧时间=40;//时间分辨率毫秒 自动启动=高分辨率时钟::现在(); while(获取_帧(帧)){ //做点什么 自动结束=高分辨率时钟::现在(); 自动运行时间=持续时间(结束-开始); //现在我想做一些类似的事情: 如果(经过

STL chrono结果与浮点值的比较 我尝试使用C++ 11中的STL计时库来测量循环的持续时间。因此,我正在尝试做以下事情: 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(); } 使用std::chrono; 双帧时间=40;//时间分辨率毫秒 自动启动=高分辨率时钟::现在(); while(获取_帧(帧)){ //做点什么 自动结束=高分辨率时钟::现在(); 自动运行时间=持续时间(结束-开始); //现在我想做一些类似的事情: 如果(经过,c++,stl,chrono,C++,Stl,Chrono,但是,这种比较会导致以下错误: no match for ‘operator<’ (operand types are ‘std::chrono::duration<long int, std::ratio<1l, 1000l> >’ and ‘double’) 与“operator”不匹配您无法比较chrono::duration和double。只需使用duration对象的函数 if (elapsed.

但是,这种比较会导致以下错误:

 no match for ‘operator<’ (operand types are ‘std::chrono::duration<long 
                           int, std::ratio<1l, 1000l> >’ and ‘double’)

与“operator”不匹配您无法比较
chrono::duration
和double。只需使用duration对象的函数

if (elapsed.count() < frame_time) 
{ 
   sleep(frame_time-elapsed.count());
}
if(经过的.count()
您的
帧时间也是一个持续时间,所以为什么不使用
std::chrono::millides
?这样,您的代码会变得更干净(一开始就不需要注释)和更安全,例如,如果
sleep()
更改为使用微秒,编译器可以警告您或选择正确的重载。

谢谢!是否做了我想要的:)或者更好地使用
std::chrono::millides
而不是双精度帧_time@FabioFracassi:这应该是另一个答案(我会对这个答案投赞成票)对不起,我有点糊涂了。这里的frame_time是double类型的变量。你的意思是将其转换为持续时间类型?不,不是转换。首先不要使用
double
。将
frame\u time
设置为
毫秒类型的变量。。。我懂了。我简化了一点。帧时间实际上来自第三方库,它以double类型返回。我将其设置为一些硬编码值以强调我的问题。然后转换,根据域进行计算并让类型系统处理单元正确性仍然是有意义的