0

構造体を持つキューがあります。この構造体には、自分自身をキューにプッシュする正確な時間が含まれます

システム時間を確認するには、次のようなものがあります。

time_t rawtime;
struct tm * timeinfo;

time ( &rawtime );
timeinfo = localtime ( &rawtime );

long callTime=timeinfo->tm_hour*3600+timeinfo->tm_min*60+timeinfo->tm_sec;
q.push( Call( callNum, callTime, callLength ));

問題は、キューから次の構造体をポップするときです。構造体がキューで待機した時間をミリ秒単位で計算したいのです。

誰かが私の言いたいことを理解してくれることを願っています.. :\

4

3 に答える 3

3

gettimeofdayキュー要素に格納されている時間を使用して減算できます。gettimeofday()ミリ秒単位の時間分解能を提供できます。詳細については、このSO リンクを確認してください。

これは、スタック内のすべての要素が、それがプッシュされた時刻も格納することを前提としています。要素にそれがない場合は、要素と時刻を含む構造体を格納するか、時刻のみを含む別のスタックを作成できます。

于 2011-05-17T18:10:37.917 に答える
1

gettimeofday()ではなく関数を使用する必要がありますtime()。前者はミリ秒未満の精度をサポートしますが、後者は最も近い秒までしか正確ではありません。

于 2011-05-17T18:10:10.197 に答える
0

gettimeofday は答えですが、アイテムがキューに入っている時間を確認したい場合は、 clock_gettime() の方が適している可能性があります。たとえば、CLOCK_MONOTONIC を使用できます (秒をカウントしないとします)。

struct timespec ts;
clock_gettime(CLOCK_MONOTONIC,&ts);
// do some action ....
struct timespec ts2;
clock_gettime(CLOCK_MONOTONIC,&ts2);
std::cout << "spend " << ts2.tv_nsec - ts.tv_nsec << " nanoseconds" << std::endl;

もちろん、clock_gettime は C++ の一部ではなく、POSIX.1-2008 の一部です。

于 2011-05-17T21:22:28.540 に答える