愚かな問題があります。私はc ++ 11ヘッダーに切り替えようとしましたが、そのうちの1つはクロノです。しかし、私の問題は、時間操作の結果を把握できないことです。例えば:
_auto t=std::chrono::high_resolution_clock::now();
cout<<t.time_since_Epoch();
_
与える:
‘std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&&, const _Tp&) [with _CharT = char, _Traits = std::char_traits<char>, _Tp = std::chrono::duration<long int, std::ratio<1l, 1000000l> >]’
... /usr/include/c++/4.6/ostreamの引数1を初期化しています
_cout<<(uint64_t)t.time_since_Epoch();
_
無効なキャストを与える
簡単なGoogle検索でこのページが見つかりました: http://en.cppreference.com/w/cpp/chrono/duration で、期間の印刷の例を見つけることができます。
編集: http://en.cppreference.com/w/cpp/chrono/duration/duration_cast に移動しました
他の人が指摘したように、count()
メンバー関数を呼び出して内部カウントを取得できます。
新しいヘッダー _<chrono_io>
_ をこのライブラリに追加しようとしています。文書化されています ここ 。 count()
を使用するだけでなく_<chrono_io>
_の主な利点は、コンパイル時の単位が出力されることです。もちろん、この情報は手動で取得できますが、ライブラリを用意する方がはるかに簡単です。
私にとって、あなたの例:
_#include <iostream>
#include <chrono_io>
int main()
{
auto t = std::chrono::high_resolution_clock::now();
std::cout << t.time_since_Epoch() << '\n';
}
_
出力:
_147901305796958 nanoseconds
_
これを行うためのソースコードはオープンソースであり、上記のリンクから入手できます。これは、2つのヘッダーで構成されます:_<ratio_io>
_および_<chrono_io>
_、および1つのソース:_chrono_io.cpp
_。
このコードは実験的であると見なされるべきです。これは標準ではなく、ほぼ確実にそのまま標準化されません。実際、LWGからの予備的なコメントは、このソフトウェアが「ショートフォーム」と呼ぶデフォルト出力を好むことを示しています。この代替出力は、次の方法で取得できます。
_std::cout << std::chrono::duration_fmt(std::chrono::symbol)
<< t.time_since_Epoch() << '\n';
_
そして出力:
_147901305796958 ns
_
ミリ秒の解像度でタイミングを取りたい場合は、次のようにします。
auto t1 = std::chrono::high_resolution_clock::now();
//process to be timed
auto t2 = std::chrono::high_resolution_clock::now();
std::cout << "process took: "
<< std::chrono::duration_cast<std::chrono::milliseconds>(t2 - t1).count()
<< " milliseconds\n";
含まれているヘッダーに追加することを忘れないでください:
#include <chrono> //timing
このキャストから何を期待しているかわからない、多分あなたはt.time_since_Epoch().count()
が欲しかった?