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

Using [] operator with a linked list?

本文关键字:列表 一起 链接 运算符      更新时间:2023-10-16

我正在尝试创建C 中的链接列表,该列表与用户结束的Python中的列表工作相似。我要实现的一个功能是使用[]运算符引用节点的值,从而使您可以轻松访问它。

这是我为之创作的成员函数,目前仅充当一个Getter:

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 and setter?

例如,在用户方面,将使用一个getter,例如:

int someInt = myList[1];

和一个设置器将被使用:

myList[1] = 67;

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

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

您可以提供可变的和const版本。如果可变版本返回参考,则可以分配给它。

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

我不会说这是一个好的想法。试图将链接列表视为阵列,尤其是如上所述,不会非常有效。