我试图在一个循环中迭代一个范围,而不是使用下面的两个 for 循环:
if (firstIndex <= secondIndex)
for (int i = firstIndex; i <= secondIndex; i++)
{...}
else
for (int i = firstIndex; i >= secondIndex; i--)
{...}
我考虑过使用 boost::irange 但它不覆盖 secondIndex 索引。
更新:我需要保留顺序并且不能交换索引。
最佳答案
以一种人为的方式,您可以使用
for (int i= first;
first >= second ? (i <= second) : (i >= second);
i+= first >= last ? +1 : -1)
可以使用增量变量和乘法来实现变体。我不太喜欢它。
int inc= first >= second ? +1 : -1;
for (int i= first; inc * i <= inc * second; i+= inc)
关于c++ - 当您不知道整数范围是按升序还是降序排列时,如何迭代它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74093442/