Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.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
如何在C++; 我正在使用C++代码,我试图在列表中保存时间-时间/代码>,这样我可以在稍后读取值,并计算时间持续时间。_C++_C++11_Time_Chrono - Fatal编程技术网

如何在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::cout
dTimeList
的类型是什么?@Holt抱歉,我已经更新了类型。您需要在列表中存储正确的类型,即
std::chrono::high_resolution_clock::time_point
,而不是
double
std::chrono::time_point
不能隐式转换为数字类型,这是有充分理由的。