如果我的容器位于两个现有值之间,那么伪造迭代器类别是否合理



我有一个rope容器,它使用一个自平衡订单统计树作为其底层存储(每个树节点都包含一个变量,但通常包含相当多的rope元素,例如,如果存储字符,则树节点可能包含约4000个元素(。

为rope迭代器分配std::random_access_iterator_tag迭代器类别是否合理,即使+、+=、-、-=等操作实际上是对数复杂度(根据与当前位置的距离(?如果新位置位于当前树节点内(这应该比较大的跳跃频繁得多(,则操作实际上是随机访问所要求的O(1(,只有当需要沿着树前进时,才丢失真正的O(2(复杂性。然而,在所有情况下,它都比O(n(好得多,因为使用双向将意味着这一点。

当然,我可以制作自己的类别标签,但我需要专门化各种独立的算法函数才能利用它。

也许这是一个不太适合SO的观点问题,但我仍然很好奇人们对这个问题的看法。

假设您正在使用库中的容器。库的文档声称容器的迭代器满足随机访问迭代器的要求。您的程序存在性能问题,可以追溯到这些迭代器的增量运算符是O(lgn(而不是O(1(。你认为投诉/提交错误报告是合理的吗?可能

你想写别人会抱怨的代码吗?可能不会。你的里程数可能会有所不同,但通常低估性能比夸大性能要好。很少有人抱怨计算速度太快。

最新更新