gpt4 book ai didi

c++ - 跳过随机迭代器的条目

转载 作者:行者123 更新时间:2023-11-30 01:52:57 25 4
gpt4 key购买 nike

假设我们有一个函数 foo某事*firsta 之间的所有元素和 *lastb :

foo(RandomAccessIterator1 firsta,RandomAccessIterator1 lasta){
for (RandomAccessIterator1 it=firsta;it!=lasta+1;it++){
//here stuff happens...
}
}

问题 a): 有没有办法跳过索引 firsta<i<lastb仅由将输入修改为 foo - 例如。随机迭代器,换句话说,不改变 foo本身,只是它的输入?

--不幸的是我要跳过的索引不在边缘(它们通常在 firstalasta 之间很深)和 foo 是一个复杂的分而治之的算法,不服从在原始数组的子集上调用迭代器指向。

问题 b):如果 a) 可行,那么这样做的成本是多少?常量还是取决于 (lasta-firsta)

最佳答案

最好的方法是使用知道如何跳过该元素的迭代器。不过,一个更通用的想法是一个迭代器,它在引擎盖下简单地迭代两个不同的范围。我不知道在 boost 中有什么可以做到这一点,所以,这是我刚刚提出的一个:http://coliru.stacked-crooked.com/a/588afa2a353942fc

不幸的是,用于检测要跳过哪个元素的代码会为每个迭代器增量增加极少量的开销,因此开销在技术上与 lasta-firsta 成正比。实际上,在 vector::iteratorchar* 周围使用此包装器应该可以使其大致达到与 std::deque::iterator< 相同的性能水平,所以这不应该是一个重大的放缓。

关于c++ - 跳过随机迭代器的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23766874/

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