C++11 标准::计时创建恒定时间圈

C++11 标准::计时创建恒定时间圈,c++11,chrono,C++11,Chrono,如果两个时间点之间的差异大于某个固定时间,我如何比较?我可以测量时间,但我无法用我想要的时间创建一个常数 到目前为止,我有以下代码: std::chrono::steady_clock::time_point t1= std::chrono::steady_clock::now(); ... std::chrono::steady_clock::time_point t2= std::chrono::steady_clock::now(); auto elapsedTime = std::chr

如果两个时间点之间的差异大于某个固定时间,我如何比较?我可以测量时间,但我无法用我想要的时间创建一个常数

到目前为止,我有以下代码:

std::chrono::steady_clock::time_point t1= std::chrono::steady_clock::now();
...
std::chrono::steady_clock::time_point t2= std::chrono::steady_clock::now();
auto elapsedTime = std::chrono::duration_cast<std::chrono::milliseconds>(t2- t1);
maxTime的分配不起作用。
您知道如何在不通过构造函数传递整数的情况下执行此操作吗?

您已将
maxTime
声明为
std::chrono::microsides
-这就是为什么您无法为其分配
int
。如果您有要分配给
maxTime
-的毫秒数,我们将其称为
int myAmount
-使用
maxTime=std::chrono::millides(myAmount)
当然,
maxTime
不能声明
const

您已将
maxTime
声明为
std::chrono::microsides
-这就是为什么您不能为其分配
int
。如果您有要分配给
maxTime
-的毫秒数,我们将其称为
int myAmount
-使用
maxTime=std::chrono::millides(myAmount)
当然,
maxTime
不能被声明为
const

您可以修改代码,如下所示:

std::chrono::steady_clock::time_point t1= std::chrono::steady_clock::now();
// ...
std::chrono::steady_clock::time_point t2= std::chrono::steady_clock::now();
auto elapsedTime = std::chrono::duration_cast<std::chrono::milliseconds>(t2-t1);
constexpr const std::chrono::milliseconds maxTime(5000); // <- this is the important change!
if(elapsedTime > maxTime){
    //...
}
std::chrono::staddy_clock::time_point t1=std::chrono::staddy_clock::now();
// ...
std::chrono::staddy_clock::time_point t2=std::chrono::staddy_clock::now();
自动延时时间=标准时间:持续时间(t2-t1);
constexpr const std::chrono::毫秒最大时间(5000);//最大时间){
//...
}

您可以更改代码,如:

std::chrono::steady_clock::time_point t1= std::chrono::steady_clock::now();
// ...
std::chrono::steady_clock::time_point t2= std::chrono::steady_clock::now();
auto elapsedTime = std::chrono::duration_cast<std::chrono::milliseconds>(t2-t1);
constexpr const std::chrono::milliseconds maxTime(5000); // <- this is the important change!
if(elapsedTime > maxTime){
    //...
}
std::chrono::staddy_clock::time_point t1=std::chrono::staddy_clock::now();
// ...
std::chrono::staddy_clock::time_point t2=std::chrono::staddy_clock::now();
自动延时时间=标准时间:持续时间(t2-t1);
constexpr const std::chrono::毫秒最大时间(5000);//最大时间){
//...
}

您能发布整个代码和编译错误吗?已发布的片段在编码基础上编译()。您是否在GCC中包含了
和正确的编译器开关(
-std=c++11
)。。。我修改了答案,这很有效。。。问题是我没有使用构造函数,但我尝试用=。你知道怎么做吗?我修改了这个问题,嗯,
maxTime
不是一个
int
,所以你不能给它赋值。try:
maxTime=std::chrono::毫秒(5000)不必将所有内容都转换为相同的单位(在示例中为毫秒)进行比较。在C++14中,可以使用计时文字。你可以说一些简单的话,比如
if(t2-t1>5s)
。你能发布完整的代码和编译错误吗?已发布的片段在编码基础上编译()。您是否在GCC中包含了
和正确的编译器开关(
-std=c++11
)。。。我修改了答案,这很有效。。。问题是我没有使用构造函数,但我尝试用=。你知道怎么做吗?我修改了这个问题,嗯,
maxTime
不是一个
int
,所以你不能给它赋值。try:
maxTime=std::chrono::毫秒(5000)不必将所有内容都转换为相同的单位(在示例中为毫秒)进行比较。在C++14中,可以使用计时文字。你可以说一些简单的话,比如
if(t2-t1>5s)