gpt4 book ai didi

c++ - 在 C++ 中有条件地从 1..n 或 n..1 迭代

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:10:18 27 4
gpt4 key购买 nike

我有一个看起来像这样的代码:

bool var = some condition...
if( var )
{
for( int i=0; i<10; ++i )
{
//execute some code ...
}
}
else
{
for( int i=9; i>=0; --i )
{
//execute some other code...
}
}

但是,for循环中需要执行的代码几乎完全相同,所以我不想写两次。我知道我可以做这样的事情:

bool var = some condition...
for( int i = (var ? 0 : 9 ); (var ? i<10 : i>=0 ); (var ? ++i : --i ) )
{
//Execute my code
}

但这是一个非常不优雅的解决方案。

有没有一种更简短、更优雅的方法来做到这一点?我检查了 std::iterator,但我认为这不是我需要的。

最佳答案

您在这里关注的是错误的问题。如果你有一个方向标志,不要完全卡在迭代变量上是正确的。按要求解释即可:

for (int i = 0; i < n; ++i)
{
int j = var ? i : n - 1 - i;

// j goes from 0..n-1 or n-1..0
}

除非您执行数十亿次此类调用,否则辅助变量的开销将微不足道。

关于c++ - 在 C++ 中有条件地从 1..n 或 n..1 迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23298508/

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