C++ 循环c+中的条件+;

C++ 循环c+中的条件+;,c++,stl,C++,Stl,我有一个函数,它接收两个无符号长参数zInit和zFinal,我想写一个从zInit到zFinal的for循环,包括这些值 目前我正在这样做: int delta= (zFinal>=zInit?1:-1); for (unsigned long k=zInit; k!=zFinal;k+=delta) { } 问题是我想根据zFinal和zInit之间的比较来指定条件“小于或等于”或“大于或等于”,就像我对delta所做的一样。什么是一个好的C++解决方案?我不想写两个循环,也不想

我有一个函数,它接收两个无符号长参数zInit和zFinal,我想写一个从zInit到zFinal的for循环,包括这些值

目前我正在这样做:

int delta= (zFinal>=zInit?1:-1);

for (unsigned long k=zInit; k!=zFinal;k+=delta)
{

}
问题是我想根据zFinal和zInit之间的比较来指定条件“小于或等于”或“大于或等于”,就像我对delta所做的一样。什么是一个好的C++解决方案?我不想写两个循环,也不想单独处理值zFinal。

相同的解决方案:

for (unsigned long k=zInit; zFinal>=zInit ? k<=zFinal : k>=zFinal ;k+=delta)
for(无符号长k=zInit;zFinal>=zInit?k=zFinal;k+=delta)

对于(无符号长k=zInit;k*delta您已经比较了zInit和zFinal;因此:

for (unsigned long k=zInit; delta > 0 ? k <= zFinal : k >= zFinal ; k += delta)
for(无符号长k=zInit;delta>0?k=zFinal;k+=delta)

简单而高效。谢谢!由于从有符号转换为无符号而失败。我喜欢这样,尽管我会说
delta>0
而不是
delta==1
,使它更通用。是的,我也是。所以修改了它!:-)
for (unsigned long k=zInit; delta > 0 ? k <= zFinal : k >= zFinal ; k += delta)