错误:尚未声明“ high_resolution_clock”

问题描述

我在Windows 10上使用的是g ++版本8.1.0,但在尝试编译时仍然如此

auto start=high_resolution_clock::Now();
rd(n);
auto stop=high_resolution_clock::Now();
auto duration = duration_cast<microseconds>(stop-start);
cout<<duration.count()<<endl;

我收到错误信息

error: 'high_resolution_clock' has not been declared
 auto start=high_resolution_clock::Now();
            ^~~~~~~~~~~~~~~~~~~~~

我同时包含了chrono和time.h

解决方法

您需要在std::chrono::high_resolution_clockmicroseconds前面指定duration_cast命名空间限定符,例如:

#include <chrono>

auto start = std::chrono::high_resolution_clock::now();
rd(n);
auto stop = std::chrono::high_resolution_clock::now();
auto duration = std::chrono::duration_cast<std::chrono::microseconds>(stop-start);
std::cout << duration.count() << std::endl;

否则,您可以改用using语句,例如:

#include <chrono>
using namespace std::chrono;

auto start = high_resolution_clock::now();
rd(n);
auto stop = high_resolution_clock::now();
auto duration = duration_cast<microseconds>(stop-start);
std::cout << duration.count() << std::endl;

或:

#include <chrono>
using std::chrono::high_resolution_clock;
using std::chrono::microseconds;
using std::chrono::duration_cast;

auto start = high_resolution_clock::now();
rd(n);
auto stop = high_resolution_clock::now();
auto duration = duration_cast<microseconds>(stop-start);
std::cout << duration.count() << std::endl;
,

哦,我刚找到解决方案, 我忘了使用chrono名称空间 因此代码应为:

auto start=chrono::high_resolution_clock::now();
rd(n);
auto stop=chrono::high_resolution_clock::now();
auto duration = chrono::duration_cast<chrono::microseconds>(stop-start);
cout<<duration.count()<<endl;

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...