#include <boost/progress.hpp>
int main()
{
boost::progress_timer t;
unsigned int a=0;
for( unsigned int i=0; i<10000; ++i )
for( unsigned int j=0; j<60000; ++j )
a += i; // 適当に時間のかかりそうな処理
return 0;
} // tのデストラクタが呼び出され、ここで時間表示
2.08 s
C++の特徴として、「自動変数はスコープが終わるところで、
デストラクタが呼び出される」というのがあります。関数のどこから
return
や break
で抜けようが、
空の彼方へ例外で飛んでいこうが必ず呼び出されるので、
終了処理をデストラクタに任せておくと、綺麗なコードを書けることがよくあります。
代表例として、「自動で delete
を行う std::auto_ptr
」
や、「関数の始めにアイコンを砂時計にして終わりに元に戻す」クラス、
「マルチスレッド用の排他制御のLock/Unlock処理」などなど。
というわけでこれは、デストラクタで経過時間を表示する、
「timer
を更に自動化したようなヤツ」です。