c++ - 将 [] 运算符与链表一起使用?
问题描述
我正在尝试在 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 也可以用作 setter?
例如,在用户端,getter 的用法如下:
int someInt = myList[1];
一个 setter 的用法如下:
myList[1] = 67;
当然,这假设myList
在索引 1 处有一个“元素”。此外,myList
它是对对象的引用List
(不是指针)。
注意:我计划在某个时候通过模板使这个结构工作。现在我只想让它与整数一起工作。
解决方案
您可以提供一个可变版本和一个常量版本。如果可变版本返回一个引用,那么您可以分配给它。
int& operator [] (int index);
const int operator [] (int index) const;
我不会说这是一个好主意。尝试将链表视为数组,尤其是如上所示,不会非常有效。
推荐阅读
- pandas - 熊猫数据框 to_parquet - 不知道如何转换数据类型:Int64
- php - Long delay when my jQuery function fires due to a large amount of values in my select form elements
- javascript - Vuetify 使标签离控件太近
- javascript - 如何在 ReactJS 的类基组件中以两种方式数据绑定传递数据?
- c# - WriteLineAsync 或 ReadAsync 无法读取 TCP Communicator C# 的字符串
- java - 使用 Iterator 对 ArrayList 进行迭代,其中 while 条件搜索 .contains() 并失败
- node.js - 遍历数组并一次显示一个 React 组件
- api - API 调用中的 GET 方法以保留标头
- java - module-info 的 sbt-assembly 合并策略
- javascript - 如果 let 没有被提升或者它们进入时间死区,那么为什么这个片段会抛出错误,当它可能只是使用全局引用时