如何在C++; 我正在使用C++代码,我试图在列表中保存时间-时间/代码>,这样我可以在稍后读取值,并计算时间持续时间。
在列表中保存时间的原因是,我有多个对象,需要捕获检测到该对象的当前时间,然后当该对象消失时,我必须计算该对象的持续时间如何在C++; 我正在使用C++代码,我试图在列表中保存时间-时间/代码>,这样我可以在稍后读取值,并计算时间持续时间。,c++,c++11,time,chrono,C++,C++11,Time,Chrono,在列表中保存时间的原因是,我有多个对象,需要捕获检测到该对象的当前时间,然后当该对象消失时,我必须计算该对象的持续时间 list <double> dTimeList; auto start = std::chrono::high_resolution_clock::now(); auto it = dTimeList.begin(); advance(it, detection.object_id); dTimeList.insert(it, start ); //But t
list <double> dTimeList;
auto start = std::chrono::high_resolution_clock::now();
auto it = dTimeList.begin();
advance(it, detection.object_id);
dTimeList.insert(it, start ); //But this is giving error
list-dTimeList;
自动启动=标准::时钟::高分辨率时钟::现在();
auto it=dTimeList.begin();
高级(it、检测、对象标识);
插入(it,start)//但这是一个错误
错误(活动)E0304重载函数“std::list::insert[with _Ty=double,_Alloc=std::allocator]”的实例与参数列表不匹配
错误C2664“std::_List_iterator>>std::List::insert(std:_List_const_iterator>>,无符号__int64,const _Ty&”):无法将参数2从“std::chrono::stable_clock::time_point”转换为“_Ty&”
在这里使用列表
是错误的。您需要存储类型为list
的列表,它与list
相同。以下代码应该可以工作:
auto start = std::chrono::high_resolution_clock::now();
list <decltype(start)> dTimeList;
auto it = dTimeList.begin();
advance(it, detection.object_id);
dTimeList.insert(it, start );
auto start=std::chrono::high_resolution_clock::now();
列表时间列表;
auto it=dTimeList.begin();
高级(it、检测、对象标识);
插入(it,start);
请注意,我已经更改了顺序或列表声明和start
。当然,您也可以使用declarator使用一些typedef
/
最后,为完整起见,高分辨率时钟
为上述类型提供了自己的别名。std::chrono::高分辨率时钟::now()
返回
std::chrono::high_resolution_clock::time_point
…出于充分的理由,它不能转换为double
。如果要存储时间点,需要有一个适当的列表:
std::list<std::chrono::high_resolution_clock::time_point> dTimeList;
std::list dTimeList;
正如评论中指出的:“您需要在列表中存储正确的类型,即std::chrono::high_resolution_clock::time_point,而不是double。出于充分的理由,std::chrono::time_point不能隐式转换为数字类型。”
我在下面提供了一个小的工作示例:
#include <iostream>
#include <chrono>
#include <vector>
#include <thread>
int main()
{
std::vector<std::chrono::time_point<std::chrono::system_clock>> dTimeList;
dTimeList.push_back(std::chrono::high_resolution_clock::now());
std::this_thread::sleep_for (std::chrono::seconds(1));
dTimeList.push_back(std::chrono::high_resolution_clock::now());
std::chrono::duration<double> difference = dTimeList[0]-dTimeList[1];
std::cout << "Time difference is: " << difference.count() << std::endl;
return 0;
}
#包括
#包括
#包括
#包括
int main()
{
std::向量dTimeList;
dTimeList.push_back(std::chrono::high_resolution_clock::now());
std::this_thread::sleep_for(std::chrono::seconds(1));
dTimeList.push_back(std::chrono::high_resolution_clock::now());
std::chrono::duration difference=dTimeList[0]-dTimeList[1];
std::coutdTimeList
的类型是什么?@Holt抱歉,我已经更新了类型。您需要在列表中存储正确的类型,即std::chrono::high_resolution_clock::time_point
,而不是double
std::chrono::time_point
不能隐式转换为数字类型,这是有充分理由的。