c++ - 当您不知道整数范围是按升序还是降序排列时,如何迭代它?

标签 c++ loops for-loop iteration

我试图在一个循环中迭代一个范围,而不是使用下面的两个 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/

相关文章:

c++ - 找出整数序列的数字总和

php - 从针中获取字符串中下一个元素的最快方法

java - 使循环仅运行一个 if 语句而不是多个 if 语句时出现问题

PHP:在除最后一个元素之外的每个元素后显示逗号。使用 'for' 语句而不使用 'implode/explode'

for-loop - `for i in &v`和 `for i in v`之间有区别吗?

c++ - 我应该在类里面使用 `this` 吗?

c++ - 当变量不在全局范围内并在自定义函数中使用时,如何在 C++ 中设置变量的值?

javascript - 需要帮助在循环中将多个数组值设置为 null - javascript

c - 需要 build 一个金字塔,数字和星星之间有空格

c++ - AWS 开发工具包 C++ : putting an object in S3 with server side encryption