我处于无法使用 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/