我在Windows10上使用的是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。
发布于 2020-08-22 14:32:36
您需要在high_resolution_clock、microseconds和duration_cast前面指定std::chrono::名称空间限定符,例如:
#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;发布于 2020-08-22 14:35:49
哦,我刚得到解决方案,我忘了使用时序命名空间,所以代码应该是:
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;https://stackoverflow.com/questions/63533235
复制相似问题