当前位置: 首页 > news >正文

Boost.Timer 中的 progress_display 进度条介绍与使用

文章目录

  • Boost.Timer 中的 progress_display 进度条介绍与使用
    • 基本介绍
    • 基本用法
      • 1. 包含头文件
      • 2. 创建进度条对象
      • 3. 更新进度
    • 完整示例
    • 输出示例
    • 高级用法
      • 自定义输出流
      • 重新开始进度条
    • 注意事项
    • 替代方案

Boost.Timer 中的 progress_display 进度条介绍与使用

Boost.Timer 库中的 progress_display 类是一个简单的控制台进度条工具,用于在长时间运行的任务中向用户显示进度反馈。

基本介绍

progress_display 类位于 <boost/timer/progress_display.hpp> 头文件中,主要特点包括:

  • 在控制台上显示一个可视化的进度条
  • 自动计算和显示预计剩余时间
  • 不需要额外的图形库支持
  • 轻量级且易于使用

基本用法

1. 包含头文件

#include <boost/timer/progress_display.hpp>

2. 创建进度条对象

boost::timer::progress_display progress(总工作量);

3. 更新进度

++progress;  // 完成一个单位的工作

progress += 完成量;  // 完成多个单位的工作

完整示例

#include <boost/timer/progress_display.hpp>
#include <vector>
#include <algorithm>
#include <iostream>
#include <thread>
#include <chrono>int main()
{// 创建一个包含100个元素的大向量std::vector<int> v(100);// 初始化进度条,总工作量为v.size()boost::timer::progress_display progress(v.size());// 模拟耗时操作for(auto& item : v){// 处理每个元素item = 42;// 模拟耗时std::this_thread::sleep_for(std::chrono::milliseconds(50));// 更新进度++progress;}return 0;
}

输出示例

进度条在控制台上的输出类似这样:

0%   10   20   30   40   50   60   70   80   90   100%
|----|----|----|----|----|----|----|----|----|----|
****************************************************                                          ]

高级用法

自定义输出流

默认情况下,progress_display 输出到 std::cout,但你可以指定其他输出流:

boost::timer::progress_display progress(100, std::cerr);

重新开始进度条

progress.restart(新的总工作量);

注意事项

  1. progress_display 不是线程安全的,如果在多线程环境中使用需要额外的同步机制
  2. 进度条会修改控制台输出,可能会干扰其他输出
  3. 对于非常快速完成的任务,进度条可能没有足够时间显示

替代方案

如果你需要更复杂的进度条功能,可以考虑:

  • Boost.Progress (已弃用)
  • 特定平台的GUI进度条
  • 第三方库如indicators或cpp-progressbar

Boost.Timer 的 progress_display 是一个简单实用的工具,适合在控制台应用程序中快速添加进度反馈。

相关文章:

  • mac redis以守护进程重新启动
  • CppCon 2016 学习:A C++ MQTT Message Broker for the Enterprise
  • 机器学习基本概念与建模流程
  • React第六十节 Router中createHashRouter的具体使用详解及案例分析
  • 安信可(云知声蜂鸟US516P6)SDK开发学习---log日志打印子系统模块
  • 蓝桥杯等竞赛场景下 C++ 的时间与空间复杂度深度解析​
  • Python打卡第51天
  • 文献管理软件EndNote下载与安装教程(详细教程)2025最新版详细图文安装教程
  • MySQL查看连接情况
  • 力扣-347.前K个高频元素
  • (ML-Agents) 是一个开源项目,它使游戏和模拟能够作为使用深度强化学习和模仿学习训练智能代理的环境
  • 建造者模式(Builder Pattern)
  • Go 通道(Channel)入门与基础使用
  • ZZU-ARM汇编语言实验2
  • 41页PPT | 基于AI制造企业解决方案架构设计智能制造AI人工智能应用智能质检人工智能质检建设
  • 在C# 中使用建造者模式
  • Spring cloud-k8s容器化部署
  • 同步与异步:软件工程中的时空艺术与实践智慧-以蜻蜓hr人才系统举例-优雅草卓伊凡
  • 记录rust滥用lazy_static导致的一个bug
  • 论文笔记 - 《Implementing block-sparse matrix multiplication kernels using Triton》
  • 网站做好怎么开始做推广/小程序开发流程
  • 本机可以做网站的服务器吗/百度导航下载2022最新版
  • 网站设计师绩效/百度指数免费添加
  • 网站文章内链怎么做/人大常委会委员长
  • 做网站批发利润怎么样/网络推广的基本渠道
  • 广告片拍摄的具体流程/c盘优化大师