C++11 chrono:为time_point对象赋值

C++11 chrono:assigning values to time_point objects

本文关键字:point 对象 赋值 time chrono C++11      更新时间:2023-10-16

我正试图使用chrono来测量某个函数所花费的时间,所以我的代码看起来像这样:

#include <chrono>
#include <iostream>
using namespace std;
void doSomething()
{
  //code goes here
}
int main()
{
  chrono::time_point<chrono::system_clock> start,end;
  start=chrono::system_clock::now;
  doSomething();
  end=chrono::system_clock::now;
}

所以,基本上,我遵循的是来自cpprreference的代码示例。

问题是我在start=chrono::system_clock::nowend=chrono::system_clock::now 上都有以下错误

error: no match for 'operator=' (operand types are 
'std::chrono::time_point<std::chrono::system_clock, 
std::chrono::duration<long long int, std::ratio<1ll, 1000000000ll> > >'
and 'std::chrono::system_clock::time_point()noexcept (true) 
{aka std::chrono::time_point<std::chrono::system_clock,
std::chrono::duration<long long int, std::ratio<1ll, 1000000000ll> > >()noexcept (true)}')

我还尝试将chrono::time_point<chrono::system_clock> start,end;更改为chrono::system_clock::time_point start,end;。错误基本相同:

error: no match for 'operator=' (operand types are
'std::chrono::system_clock::time_point 
{aka std::chrono::time_point<std::chrono::system_clock,
std::chrono::duration<long long int, std::ratio<1ll, 1000000000ll> > >}'
and 'std::chrono::system_clock::time_point()noexcept (true) 
{aka std::chrono::time_point<std::chrono::system_clock,
std::chrono::duration<long long int, std::ratio<1ll, 1000000000ll> > >()noexcept (true)}')

我使用Qt 5.1.0(32位)和MinGW 4.8 32位作为编译器。我还必须通过在.pro文件中添加QMAKE_CXXFLAGS+=-std=c++11来添加编译器标志以支持c++11。

()用于system_clock::now

  chrono::time_point<chrono::system_clock> start,end;
  start=chrono::system_clock::now(); //<-- Fix
 doSomething();
  end=chrono::system_clock::now();  //<-- Fix

计算运行时间为:

  auto duration = end - start;
  std::cout << chrono::duration <double, std::milli> (duration).count()
            << " ms" << std::endl;