首页 > 解决方案 > 有没有办法在 C++ 中创建一个循环数组

问题描述

好的,所以我有一个问题,我怀疑这是一个实际的 c++ 功能,但值得一试......我正在创建一个基于终端文本的 mancala 游戏,并且我正在使用一个数组来跟踪板的每个杯子中​​的点,我想知道是否有任何方法可以让用户触发“boardArray [13]”杯子,并且数组的流程按时间顺序进行,我想要的值"boardArray[13]" 循环回到板的开头,并开始分配回 "boardArray[1]"。我怀疑这是有道理的,如果您需要我澄清,请告诉我。我基本上想要一个数组

1,2,3,4,5,6,7,8,9,10,11,12,13,14, RESET 
1,2,3,4,5,6,7,8,9,10,11,12,13,14, RESET
1,2,3...

标签: c++arraysloops

解决方案


内置数组类型不会这样做。如果你愿意,很容易创建一个带有重载运算符的类型来完成这项工作。

template <std::size_t N>
class LoopedArray {
    int data[N];
public:
    int &operator[](size_t index) { 
        return data[index % N];
    }
};

int main() {
    LoopedArray<13> la;

    // put known values into the array:
    for (int i=0; i<13; i++)
        la[i] = i;

    // demonstrate reading the data with "looping" of the index:
    for (int i=0; i<100; i++)
        std::cout << la[i] << "\t";
}

我是否真的推荐这样做还有待商榷,但它肯定可以做到,而且我想我可以相信它可能有用......


推荐阅读