C 等价于循环的 Python 范围

C equivalent of Python ranges for loops

我最近才开始用 C 编写代码,我正在查看是否有非独占范围并集的标准实现(最好不使用其他库),例如 Python.

我正在寻找以下(在 Python 中)的 C 等价物:

for k in (range(-1, 2) + range(i-1, i+2)):

定义包含具有这些范围的元素的数组是不够的,因为取决于两个范围的交集(取决于 i),数组的大小。我最好的选择是什么?

您可以使用两个循环:

for (k = -1; k < 2; ++k) {
  do_stuff(k);
}
for (k = i - 1; k < i + 2; ++k) {
  do_stuff(k);
}

或者,在 C99 中:

int indices[] = {-1, 0, 1, i - 1, i, i + 1};
for (int j = 0; j < 6; ++j) {
  int k = indices[j];
  // ...
}

问题说:

depending on the intersection of the two ranges (which depends on i), the size of the array.

这不是问题中代码的工作方式。如果两个范围相交,代码将对相交的值进行两次迭代。此处提供的 C 代码模仿了该代码。