jma*_*erx 1 c++ list operator-overloading
我处于无法使用a的情况,vector因为我使用&element[x]然后添加更多项目,因此指针无效.问题是std::list似乎没有超载operator []也没有提供at()方法.因此,我看到我可以模拟的唯一方法at()是使用迭代器.有没有更好的方法来做到这一点?
vector
&element[x]
std::list
operator []
at()
Ale*_*tov 9
您可能应该重新考虑您的设计.
试图仿效operator[]或at为std::list会导致性能的灾难:因为这些操作将需要O(N),而不是O(1)时间std::list::iterator为双向迭代器,而不是随机访问迭代器.因此,如果您现在遍历容器并调用[]或at每个元素,它将导致O(N*N)而不是O(N).
operator[]
at
std::list::iterator
[]
这就是为什么不提供这些操作的原因std::list.
归档时间:
14 年 前
查看次数:
228 次
最近记录:
12 年,10 月 前