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 代码模仿了该代码。
我最近才开始用 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 代码模仿了该代码。