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

参数包展开到初始化列表

上次写过参数包展开和静态断言的使用——Accumulator-CSDN博客,数组是静态定义的,并且递归展开参数包。这里改用动态数组,并且将参数包展开到初始化列表中,成为一个动态数组。

#include <stdio.h>
#include <vector>
using namespace std;class Accumulator {
public:Accumulator(int n);void reset(void);double& operator[](int ii);void add(const vector<double>& b);template <typename... T>void add(T... args);private:vector<double> a;
};int main(void) {Accumulator a(3);//a.add(1);/*C2398	元素“1”: 从“int”转换到“_Ty”需要收缩转换*/a.add(1.5,5.0,3.0);printf("%g %g %g\n",a[0],a[1],a[2]);a.add(7.0,2.5,6.0);printf("%g %g %g\n",a[0],a[1],a[2]);a.add(10.0,20.0);printf("%g %g %g\n",a[0],a[1],a[2]);return 0;
}Accumulator::Accumulator(int n) :a(n,0) {}void Accumulator::reset(void) {a.assign(a.size(),0);
}double& Accumulator::operator[](int ii) {return a[ii];
}void Accumulator::add(const vector<double>& b) {for (int i=0;i<a.size()&&i<b.size();i++)a[i]+=b[i];
}template<typename... T>
void Accumulator::add(T... args) {add(vector<double>{args...});
}

相关文章:

  • 高频数据冲击数据库的技术解析与应对方案
  • 《操作系统真象还原》第十二章(2)——进一步完善内核
  • 短信登录功能实现(黑马点评)
  • 山东大学计算机组成与设计第七章习题解析
  • 评估动态化烹饪工艺与营养实训室建设要点
  • NAPPING: 1.0.1靶场(Vulnhub系列)
  • Java框架“若依RuoYi”前后端分离部署
  • 视频编解码学习二之颜色科学
  • 通过Docker部署Prometheus + Grafana搭建监控平台【超详细版】
  • 机器学习常用评价指标
  • 海外新版本开发高端Apple/科技汽车/共享投资理财平台系统
  • FastAPI系列14:API限流与暴力破解防护
  • 机器人编程基础---C语言中的表达式和求值
  • Docker Compose:服务编排:批量管理多个容器
  • QT中的JSON
  • MIT6.S081-lab8前置
  • 硬件零基础入门(尚硅谷)
  • 3392. 统计符合条件长度为 3 的子数组数目
  • UDP网络编程
  • python使用cv2在图片上话矩形框
  • 准80后遵义市自然资源局局长陈清松任仁怀市委副书记、代市长
  • 艺术开卷|韩羽读齐白石:妙在似与不似之间
  • 拍摄《我们这一代》的肖全开展“江浙沪叙事”
  • 中老铁路跨境国际旅客突破50万人次
  • 朝鲜新型驱逐舰“崔贤”号进行多项武器试验
  • 万科:一季度营收近380亿元,销售回款率超100%