在实际索引中转换“循环”索引的最简洁/有效的函数(在 C++ 中)是什么?
我的问题可以用下图说明:
我有一个包含元素大小的真实列表(例如 C++ 向量)size
(此处A, B, C, D, E
)。为了模仿“循环”列表,我正在寻找一个函数来将输入索引(从-inf
到+inf
)转换为列表的实际索引。使用此功能和图像示例代码:
for(i=-10; i < 10; ++i) std::cout<<list[myFunction(i, list.size())]<<" ";
将打印图像中显示的列表的 4 倍。
我目前的表达myFunction
是:
inline int myFunction(const int i, const int size)
{
return (i >= 0) ? (i%size) : ((size-((-i)%size))%size);
}
你认为有一个更简单/简洁/有效的方式来写这个吗?