2016-06-15 3 views
0

Ich wollte Knoten in meiner Liste Variable hinzuzufügen, die Zeit vom Beginn des Programms verstrichene enthält. Leider sind alle gleich. Was ist falsch in meinem Code?Warum haben alle Elemente in meiner Liste die gleiche Zeit der Erstellung?

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

Vielleicht falsch, was ist, ist, dass Ihr Computer exteremly schnell ** oder ---> ** Sie fragen nur für jemanden, der es zu debuggen für Sie –

+0

Bitte Frage bearbeiten und den Code hinzufügen, Elemente hinzufügt. – kebs

+0

Abhängig von Ihrer Plattform gibt 'clock()' wahrscheinlich die CPU-Zeit und nicht die tatsächliche Zeit zurück. Außerdem ist seine Auflösung ziemlich niedrig. – interjay

Antwort

6

Warum alle Elemente in meiner Liste haben die gleiche Zeit der Schöpfung bekommen?

Du

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

den Wert für die time Membervariable zu erhalten. Das ist die Zeit in Millisekunden. Heutige Computer können in einer Millisekunde eine Menge Arbeit leisten. Die zum Erstellen aller Objekte benötigte Zeit scheint weniger als eine Millisekunde zu betragen. Deshalb sehen Sie für alle Ihre Objekte den gleichen Wert time. Wenn die Auflösung clock größer als eine Millisekunde ist, wird für eine größere Anzahl von Objekten der gleiche Wert time angezeigt.

+0

Das ist eine plausible Erklärung. –

+2

Die tatsächliche Auflösung von "Uhr" ist wahrscheinlich sogar schlechter als eine Millisekunde. – interjay

Verwandte Themen