为什么我列表中的所有元素都有相同的创建时间

Why all the elements in my list have got the same time of creation?

本文关键字:创建 时间 元素 为什么 列表      更新时间:2023-10-16

我想添加到列表变量中的节点,其中包含从程序开始时经过的时间。不幸的是,所有人都一样。我的代码有什么问题?

    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();
};

为什么我列表中的所有元素都有相同的创建时间?

您正在使用

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

获取time成员变量的值。那是毫秒的时间。当今的计算机可以在毫秒内完成很多工作。创建所有对象所花费的时间似乎比毫秒少。这就是为什么您看到所有对象的time值相同的值。

如果clock的分辨率大于毫秒,则您将看到大量对象的time值。