c++ - 有没有办法在 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...
解决方案
内置数组类型不会这样做。如果你愿意,很容易创建一个带有重载运算符的类型来完成这项工作。
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";
}
我是否真的推荐这样做还有待商榷,但它肯定可以做到,而且我想我可以相信它可能有用......
推荐阅读
- react-native-android - React-Native Twitter 嵌入时间线
- javascript - Android 应用无法在 Android 9 版本上启动
- stm32 - 未定义对 f_opendir 的引用
- powershell - PowerShell 命令中的 /w 1 和 /C 是什么?
- node.js - BLOB 作为 LOB 和 Buffer 随机返回
- git - 列出更改和依赖的模块
- php - PHP / Laravel - 共享关系的独特结果
- javascript - JS读取本地大图文件的像素数据
- python - 为什么`object`是`type`的实例而`type`是`object`的实例?
- javascript - 运行离线时钟 28 小时 56 分 56 秒的 Android Widget 时钟