将[]运算符与链表一起使用?

时间:2019-05-13 05:21:08

标签: c++

我正尝试在C ++中创建一个链接列表,其工作方式类似于列表在用户端在Python中的工作方式。我尝试实现的一项功能是使用[]运算符来引用节点的值,从而使您可以轻松地访问它。

这是我为此编写的成员函数,目前仅充当吸气剂:

int operator [] (int index) {
    if (index >= length) { // length is a member variable
        throw out_of_range("");
    }

    IntNode* current = head;
    for (int i = 0; i <= index; i++) {
        if (current->index == index) {
            return current->value;
        }
        current = current->next;
    }
}

我的问题是:有没有一种方法可以使[]运算符既可以用作getter也可以用作setter?

例如在用户端,将使用getter:

int someInt = myList[1];

然后使用setter,例如:

myList[1] = 67;

这当然是假设myList在索引1处有一个“元素”。 另外,myList是对List对象(不是指针)的引用。

注意:我计划在某个时候通过模板使此结构起作用。现在,我只希望它可以使用整数。

1 个答案:

答案 0 :(得分:0)

您可以提供可变的和const版本。如果可变版本返回引用,则可以为其分配引用。

int& operator [] (int index);
const int operator [] (int index) const;

我不会说这是一个想法。试图将链接列表视为数组,尤其是如上所述,并不是很有效。