C++笔记之rolling counter(滚动计数器)

C++笔记之rolling counter(滚动计数器)

一个 rolling counter(滚动计数器)是一个计数器,可以在给定的范围内不断增加,当达到最大值时会从最小值重新开始。

code review!

文章目录

  • C++笔记之rolling counter(滚动计数器)
    • 1.一个用C++实现滚动计数器的简单示例代码
    • 2.rolling_counter的使用场景

1.一个用C++实现滚动计数器的简单示例代码

在这里插入图片描述

在上面的代码中,RollingCounter 类用于实现滚动计数器。它接受三个参数:最小值、最大值和起始值(默认为0)。increment 函数用于增加计数器的值,并在达到最大值时将其重置为最小值。getValue 函数用于获取当前计数器的值。

main 函数中,我们创建了一个滚动计数器实例,并进行了一些增加计数器值的操作。你可以根据需要进行进一步的修改和扩展。
运行

Current value: 5
Current value: 6
Current value: 7
Current value: 8
Current value: 9
Current value: 0
Current value: 1
Current value: 2
Current value: 3
Current value: 4
Current value: 5
Current value: 6
Current value: 7
Current value: 8
Current value: 9

代码

#include <iostream>class RollingCounter {
private:int current;int minValue;int maxValue;public:RollingCounter(int minVal, int maxVal, int startVal = 0): minValue(minVal), maxValue(maxVal), current(startVal) {if (minValue > maxValue) {std::cerr << "Error: minValue must be less than or equal to maxValue" << std::endl;exit(1);}if (current < minValue || current > maxValue) {std::cerr << "Error: startVal must be within the range [minValue, maxValue]" << std::endl;exit(1);}}void increment() {current = (current + 1) > maxValue ? minValue : (current + 1);}int getValue() const {return current;}
};int main() {RollingCounter counter(0, 9, 5);for (int i = 0; i < 15; ++i) {std::cout << "Current value: " << counter.getValue() << std::endl;counter.increment();}return 0;
}

2.rolling_counter的使用场景

滚动计数器(Rolling Counter)在许多应用场景中都有用处,主要用于循环计数和周期性操作。以下是一些使用滚动计数器的常见场景:

  1. 循环显示器(Cyclic Display):滚动计数器可用于循环展示一组元素,如广告牌上的广告、数字时钟上的数字等。当计数器达到最大值后,它会从最小值重新开始,形成循环效果。

  2. 计时器和定时操作:在需要定期执行某项操作的场景中,滚动计数器可以用来追踪时间或循环周期。例如,周期性地更新UI元素、定时触发事件等。

  3. 循环迭代:当你需要在一个固定的范围内循环迭代,而不是在超过范围时抛出错误,滚动计数器可以派上用场。例如,在游戏中循环遍历地图的区块或角色列表。

  4. 有限状态机(Finite State Machines):有些状态机需要在一组有限状态之间循环切换。滚动计数器可以作为状态的索引,帮助控制状态之间的切换。

  5. 轮询和循环队列:在处理数据队列或缓冲区时,滚动计数器可以帮助你循环遍历数据,确保队列不会溢出或数据不会丢失。

  6. 信号灯控制:在交通信号灯或工业控制系统中,滚动计数器可以用来模拟信号灯的状态切换,从而在不同状态之间循环。

  7. 动画循环:在动画中,滚动计数器可以用来确定动画帧的索引,以实现动画的循环播放。

  8. 轮流调度:在任务调度或资源分配中,滚动计数器可以帮助循环选择任务或资源,实现公平分配。

总之,滚动计数器适用于任何需要在一定范围内循环计数或迭代的场景。通过循环计数,实现周期性的操作、状态切换、循环展示等功能。根据具体应用的需求,可以将滚动计数器灵活地应用于不同的领域。

请添加图片描述
请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/108079.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从零到富:探索CSGO搬砖项目的无限可能

在如今互联网时代&#xff0c;有一项令人惊叹的项目正悄然兴起&#xff0c;它就是CSGO搬砖项目。作为一个从零开始的家伙&#xff0c;我亲身经历了这个项目的神奇魅力&#xff0c;每天轻松赚取几十上百的收益&#xff0c;无风险&#xff0c;低成本。今天&#xff0c;我将带领大…

HarmonyOS开发第一步,熟知开发工具DevEco Studio

俗话说的好&#xff0c;工欲善其事&#xff0c;必先利其器&#xff0c;走进HarmonyOS第一步&#xff0c;开发工具必须先行&#xff0c;当然了&#xff0c;关于开发工具的使用&#xff0c;官网和其他的博客也有很多的讲解&#xff0c;但是并没有按照常用的功能进行概述&#xff…

使用ChatGPT给Python代码写单元测试

先写一个简单的python函数&#xff0c;找chatgpt写单元测试&#xff1a; 有一个python函数&#xff0c;请帮忙写单元测试&#xff0c;函数长这样&#xff1a; def test2(a: list, b: list) -> float:"""计算两个坐标的距离:param a list 格式如&#xff1a…

iview时间控件 动态不可选日期 可选择24小时范围内 时间往后退24小时

演示 html 设定 起始时间 触发on-change 方法结束时间 options 动态设置不可选择的日期。 <!-- 起始时间 --> <FormItem :label"$t(startTime)" prop"startTime"><DatePickertransfertype"datetime":placeholder"$t(pleas…

Mac操作系统上设置和配置PPPoE连接

嗨&#xff0c;在使用Mac的小伙伴么&#xff01;你是否在Mac操作系统上尝试设置和配置PPPoE连接&#xff0c;却不知道怎么设置&#xff1f;别担心&#xff0c;今天我将为你一步步教你如何在Mac上进行设置和配置。无论你是新手还是有经验的用户&#xff0c;本文都将帮助你轻松完…

回归预测 | MATLAB实现GA-APSO-IBP改进遗传-粒子群算法优化双层BP神经网络多输入单输出回归预测

回归预测 | MATLAB实现GA-APSO-IBP改进遗传-粒子群算法优化双层BP神经网络多输入单输出回归预测 目录 回归预测 | MATLAB实现GA-APSO-IBP改进遗传-粒子群算法优化双层BP神经网络多输入单输出回归预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 MATLAB实现GA-…

(2023)Linux安装pytorch并使用pycharm远程编译运行

&#xff08;2023&#xff09;Linux安装pytorch并使用pycharm远程编译运行 安装miniconda 这部分参考我这篇博客的前半部分Linux服务器上通过miniconda安装R&#xff08;2022&#xff09;_miniconda 安装r_Dream of Grass的博客-CSDN博客 创建环境 创建一个叫pytorch的环境…

kafka复习:(11)auto.offset.reset的默认值

在ConsumerConfig这个类中定义了这个属性的默认值&#xff0c;如下图 也就是默认值为latest,它的含义是&#xff1a;如果没有客户端提交过offset的话&#xff0c;当新的客户端消费时&#xff0c;把最新的offset设置为当前消费的offset. 默认是自动提交位移的&#xff0c;每5秒…

Android View动画整理

View 动画相关内容可参考官网 动画资源 此前也有写 View 动画相关的内容&#xff0c;但都只是记录代码&#xff0c;没有特别分析。以此篇作为汇总、整理、分析。 Android View 动画有4中&#xff0c;分别是 平移动画 TranslateAnimation缩放动画 ScaleAnimation旋转动画 Rot…

JZ36 二叉搜索树与双向链表

题目来源&#xff1a;牛客网 题目描述&#xff1a; 输入一棵二叉搜索树&#xff0c;将该二叉搜索树转换成一个排序的双向链表。如下图所示 注意: 1.要求不能创建任何新的结点&#xff0c;只能调整树中结点指针的指向。当转化完成以后&#xff0c;树中节点的左指针需要指向前驱…

【LLM】解析pdf文档生成摘要

文章目录 一、整体思路二、代码三、小结Reference 一、整体思路 非常简单的一个v1版本 利用langchain和pdfminer切分pdf文档为k块&#xff0c;设置overlap等参数先利用prompt1对每个chunk文本块进行摘要生成&#xff0c;然后利用prompt2对多个摘要进行连贯组合/增删模型可以使…

【算法训练-链表】合并两个有序链表、合并K个有序链表

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;首先&#xff0c;链表对应的数据结构在这篇Blog中&#xff1a;【基本数据结构 一】线性数据结构&#xff1a;链表&#xff0c;基于对基础知识的理解来进行题目解答。…

Vue2向Vue3过度Vuex状态管理工具快速入门

目录 1 Vuex概述1.是什么2.使用场景3.优势4.注意&#xff1a; 2 需求: 多组件共享数据1.创建项目2.创建三个组件, 目录如下3.源代码如下 3 vuex 的使用 - 创建仓库1.安装 vuex2.新建 store/index.js 专门存放 vuex3.创建仓库 store/index.js4 在 main.js 中导入挂载到 Vue 实例…

0821|C++day1 初步认识C++

一、思维导图 二、知识点回顾 【1】QT软件的使用 1&#xff09;创建文件 创建文件时&#xff0c;文件的路径一定是全英文 2&#xff09;修改编码 工具--->选项--->行为--->默认编码&#xff1a;system 【2】C和C的区别 C又叫C plus plus&#xff0c;C是对C的扩充&…

交通科技与管理杂志社交通科技与管理编辑部2023年第9期目录

专家论坛 黑龙江省经济高质量发展与生态环境保护耦合协调发展研究 刘降斌;祃玉帅; 1-5142 我国省际数字经济高质量发展水平综合评价研究 耿娟;毕晨曦; 6-8 振兴龙江《交通科技与管理》投稿邮箱&#xff1a;cn7kantougao163.com(注明投稿“《交通科技与管理》”) 数…

基于单片机的智能数字电子秤proteus仿真设计

一、系统方案 1、当电子称开机时&#xff0c;单片机会进入一系列初始化&#xff0c;进入1602显示模式设定&#xff0c;如开关显示、光标有无设置、光标闪烁设置&#xff0c;定时器初始化&#xff0c;进入定时器模式&#xff0c;如初始值赋值。之后液晶会显示Welcome To Use Ele…

性能优化维度

CPU 首先检查 cpu&#xff0c;cpu 使用率要提升而不是降低。其次CPU 空闲并不一定是没事做&#xff0c;也有可能是锁或者外部资源瓶颈。常用top、vmstat命令查看信息。 vmstat 命令: top: 命令 IO iostat 命令&#xff1a; Memory free 命令&#xff1a; 温馨提示&#xff1a…

【悬挂绝缘子的串效模型】测量每个绝缘子盘之间的电压并测量串效研究(Simulink)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

无可用的防病毒提供方你的设备

今天安装软件时关闭了一下windows的Defender&#xff0c;然后安装后出现下面问题 莫名奇妙我的病毒防护就不能用了 后来请教了老师才知道是安装的软件把我系统设置改了&#xff0c;以后使用一键安装软件要谨慎 解决措施&#xff1a; CMD命令&#xff0c;输入“regedit”&#…

SpringCloud Alibaba实战和源码(7)Skywalking

什么是SkyWalking Skywalking是由国内开源爱好者吴晟开源并提交到Apache孵化器的产品&#xff0c;它同时吸收了Zipkin /Pinpoint /CAT 的设计思路。特点是&#xff1a;支持多种插件&#xff0c;UI功能较强&#xff0c;支持非侵入式埋点。目前使用厂商最多&#xff0c;版本更新较…