将[]运算符与链接列表一起使用
Using [] operator with a linked list?
我正在尝试创建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;
我不会说这是一个好的想法。试图将链接列表视为阵列,尤其是如上所述,不会非常有效。
相关文章:
- 当返回语句时,逗号运算符、大括号初始化列表和 std::unique_ptr 组合在一起
- 与引用一起使用的列表,在用作成员时更改行为
- 与lambda一起使用虚拟继承在初始化列表中捕获此问题的GCC错误
- 将[]运算符与链接列表一起使用
- 当将 getline 与 int 一起使用时,如何修复"没有重载函数 'getline' 的实例与参数列表匹配"
- 如何将重新绑定与自定义分配器和自定义列表一起使用
- 如何将 2 个链表合并或合并在一起以创建新列表
- 常量变量初始化仅与成员初始化列表一起工作
- 将initalizer列表与从空基类继承的结构一起使用
- 具有与专用列表一起使用的参数列表的超类方法<superclass>
- 为什么 auto 关键字不能与指向函数的指针的初始化列表一起使用?
- 如何将列表语法与默认精神一起使用
- 使初始化列表与 C++ 中的继承一起使用
- 将 clang 3.1 与初始值设定项列表一起使用
- 将BOOST_FOREACH与恒定的侵入性列表一起使用
- 如何将 auto 与初始值设定项列表一起使用push_back
- 如何使用与成员初始化器列表一起使用的static_assert
- boost DFS不能与set垂直列表一起工作
- STL算法可以与循环列表一起使用吗?
- 将字符串的填充构造函数与初始值设定项列表一起使用