std :: list的[]运算符?

jma*_*erx 1 c++ list operator-overloading

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

Ale*_*tov 9

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

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

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