gpt4 book ai didi

c++ - 减去映射迭代器

转载 作者:太空狗 更新时间:2023-10-29 20:21:32 25 4
gpt4 key购买 nike

我有一个程序,其中有两个 std::map 迭代器分别表示 leftright。我想找到 [left,right]. 范围内的元素数

我天真地做了这样的事情:int len = right - left。我认为它会很好但是它 gave me an error

然后我发现了 distance(left, right) 方法,感谢 Stack Overflow 上的一篇文章,但不幸的是它具有线性时间复杂度。

是否有可能为此获得O(1) 解决方案?

最佳答案

Is it possible to get an O(1) solution for this?

没有。 std::map 有一个 BidirectionalIterator . BidirectionalIterator 不支持随机访问,只能递增或递减。这意味着如果你想向前移动 5 个位置,你必须调用 ++iterator_name 5 次。如果您需要随机访问,那么您将需要选择一个支持它的容器,例如 std::arraystd::vector

关于c++ - 减去映射迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43680836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com