gpt4 book ai didi

c++ - 对称迭代数组

转载 作者:太空宇宙 更新时间:2023-11-04 01:34:32 25 4
gpt4 key购买 nike

不太确定如何命名它,但我希望它有意义。我想向前和向后迭代一个数组 x 次。一种选择是将数组的大小加倍,然后根据模长度进行迭代,从而以循环方式进行迭代。假设一个非常大的序列,这可能会消耗大量不必要的内存。另一种选择是:

while(++i <= iterations) {
for(j = 0; j < arrayLength; j++){
//do something
}
for(j = arrayLength - 1; j >= 0; j--){
//do something
}
}

虽然这感觉很丑陋 - 我有点重复自己,只是切换++/--。我正在为此寻找一种优雅的编码方法。语言应该是 C 或 C++。非常清楚,我正在寻找一种不同的算法。谢谢。

最佳答案

boost::adaptors::reverse可以在这里派上用场:

#include <boost/range/adaptors.hpp>

while (i++ < iterations) {
for (auto i : array) /* do something */ ;
for (auto i : boost::adaptors::reverse(array)) /* do something */ ;
}

在 C++14 中,我们还有 std::rbegin and std::rend , 所以你可以这样写:

auto rb = std::rbegin(array);
auto re = std::rend(array);
while (rb != re) {
// do something
++rb;
}

也就是说,如果您使用的是普通数组。大多数标准容器已经带有 rbegin()rend() 方法,它们为您提供反向迭代器。

关于c++ - 对称迭代数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16904708/

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