c++ - [] std::list 的运算符?

标签 c++ list operator-overloading

我处于无法使用 vector 的情况,因为我使用 &element[x] 然后添加更多项以使指针无效。问题是 std::list 似乎没有重载 operator [] 也没有提供 at() 方法。因此,我认为可以模拟 at() 的唯一方法是使用迭代器。然而,是否有更好的方法来做到这一点?

最佳答案

您可能应该重新考虑您的设计。

尝试为 std::list 模拟 operator[]at会导致性能灾难:这些操作将花费 O(N) 而不是 O(1) 时间,因为 std::list::iterator 是双向迭代器,而不是随机访问迭代器。因此,如果您现在遍历容器并为每个元素调用 []at,它将导致 O(N*N) 而不是 O(N)。

这就是为什么 std::list 不提供这些操作的原因。

关于c++ - [] std::list 的运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7388768/

相关文章:

c# - 尝试使用 WPF 创建一个 ListBox,我想通过代码填充成员

C++ 运算符重载错误检查无异常

c++ - 运行时检查失败 #0 从 kernel32.dll 加载 QueryFullProcessImageName

c++ - 使用字符串变量初始化字符数组

c++ - 如何仅在 C 中将 SIGINT 发送到后台进程

C++ MFC : Memory Leak When Creating CString From Char*

Python,使用列表,找到最大序列长度

c# - 以键和值作为类类型并使用键和索引访问值的数据结构

c++使用指向其他类的指针重载类的赋值运算符

C# 在类外重载运算符==