如何实现C ++列表的operator =?

时间:2019-11-11 04:42:41

标签: c++ visual-c++

这是关于实现c ++列表的任务,因此如果有人要问“为什么不使用[非常方便的东西]而不是列表”,答案是问我的教授,而不是我。我也无法更改标题。请注意,此版本的列表仅必须能够接受int数据类型。假设我假设已经实现了list的所有其他功能。

首先,我已经尝试过了,但是没有意识到我无法遍历常量的l(所以没有l.curr = l.curr-> next等)。

Linkedlist& Linkedlist::operator=(const Linkedlist& l)
{
    if (this != &l)
    {
        this->clear();
        l.curr = l.head;
        for (int i = 0; i < l.numElem; i++)
        {
            this->push_back(l.curr->data);
        }
    }

    return *this;
}

我也尝试过这样做,但是由于它是常数,所以我不能再以任何形式修改l。类型限定符不兼容。

Linkedlist& Linkedlist::operator=(const Linkedlist& l)
{
    if (this != &l)
    {
        this->clear();
        for (int i = 0; i < l.numElem; i++)
        {
            this->push_back(l.front());
            l.pop_front();
        }
    }

    return *this;
}

对不起/让我知道是否需要提供更多信息。

1 个答案:

答案 0 :(得分:1)

  

我无法遍历不变的<application ... android:usesCleartextTraffic="true" ...> ... </application> (因此l等都没有)。

这不是您遍历对象节点的方式。您可以使用:

l.curr = l.curr->next

您可以使用:

for (auto iter = l.head; iter != nullptr; iter = iter->next )
{
}