2016-06-15 5 views
0

プログラムの開始からの経過時間を含むリスト変数のノードに追加したかったのです。残念なことに、それらのすべてが同じです。私のコードで何が間違っていますか?私のリスト内のすべての要素は、創造の同じ時間を持っているのはなぜなぜ私のリストのすべての要素が同じ作成時間を持っていますか?

void MyList:: pushBack(val nval) 
{ 
    if (size == 0) 
    { 
     first->elem = nval; 
     first->time = ((clock()/(double)(CLOCKS_PER_SEC)) * 1000); 
     size++; 
     return; 
    } 
    Node *n = new Node(); 
    n->time= ((clock()/(double)(CLOCKS_PER_SEC)) *1000); 
    n->elem = nval; 
    last->next = n; 
    last = n; 
    size++; 
// delete n; 

} 
    struct Node { 
    double time; 
    val elem; 
    Node *next=nullptr; 
}; 

class MyList 
{ 
    int size = 0; 
    Node* first; 
    Node* last = first; 
MyList(); 
void pushBack(val nval); 
~MyList(); 
}; 
+2

あなたのコンピュータは非常に高速です**または**あなただけのためにあなたのためにそれをデバッグするように頼んでいる –

+0

質問を編集し、要素を追加するコードを追加してください。 – kebs

+0

プラットフォームに応じて、 'clock()'は実際の時刻ではなくCPU時間を返します。また、その解像度はかなり低いです。 – interjay

答えて

6

あなたはtimeメンバ変数の値を取得するために

((clock()/(double)(CLOCKS_PER_SEC)) * 1000); 

を使用しています。それはミリ秒単位の時間です。今日のコンピュータは、1ミリ秒で多くの作業を行うことができます。すべてのオブジェクトを作成するのにかかる時間は、1ミリ秒未満です。そのため、すべてのオブジェクトに対して同じ値のtimeが表示されます。

clockの解像度が1ミリ秒より大きい場合、オブジェクトの数が多い場合は同じ値timeが表示されます。

+0

それはそう考えられます。 –

+2

'clock'の実際の解像度はおそらくミリ秒より悪いです。 – interjay

関連する問題