首页 > 其他分享 >编译期循环执行的代码

编译期循环执行的代码

时间:2024-02-19 22:44:23浏览次数:31  
标签:onesCount constexpr 代码 编译 循环 template accumulate 模板 size

使用模板元编程进行递归编写,来实现编译期代码循环执行

例:给定一个无符号整数(unsigned int),求该整数对应的二进制数中有几个1

#include <iostream>

template <size_t input>
constexpr size_t onesCount = (input % 2) + onesCount<(input / 2)>;

template <>
constexpr size_t onesCount<0> = 0;

int main() {
    constexpr size_t res = onesCount<45>;
    std::cout << res << std::endl;
}

也可以使用这种写法结合变参模板来处理数组

如下数组求和的程序

#include <iostream>

template <size_t...input>
constexpr size_t accumulate = 0;

template <size_t cur_input, size_t...input>
constexpr size_t accumulate<cur_input, input...> = cur_input + accumulate<input...>;

int main() {
    constexpr size_t res = accumulate<1, 2, 3, 4, 5>;
    std::cout << res << std::endl;
}

当模板参数个数大于0时,都会执行特化的模板,当模板参数为空时,执行上面的模板返回0,结束递归

标签:onesCount,constexpr,代码,编译,循环,template,accumulate,模板,size
From: https://www.cnblogs.com/wangtianning1223/p/18022102

相关文章

  • 代码随想录 day55 最佳买卖股票时机
    最佳买卖股票时机含冷冻期1.[i][0]holdingthestock2.[i][1]aftercooldownbutstilnotbuingthestock3.[i][2]sellingthestock4.[i][3]cooldown就是在Ⅱ的基础上加入了第三四个状态这里必须分开才能表示出冷冻期内不能交易买卖股票的最佳时机含手续费......
  • 【机器学习算法】KNN鸢尾花种类预测案例和特征预处理。全md文档笔记(已分享,附代码)
    本系列文章md笔记(已分享)主要讨论机器学习算法相关知识。机器学习算法文章笔记以算法、案例为驱动的学习,伴随浅显易懂的数学知识,让大家掌握机器学习常见算法原理,应用Scikit-learn实现机器学习算法的应用,结合场景解决实际问题。包括K-近邻算法,线性回归,逻辑回归,决策树算法,集成学习,聚......
  • R语言Apriori关联规则、kmeans聚类、决策树挖掘研究京东商城网络购物用户行为数据可视
    全文链接:http://tecdat.cn/?p=30360最近我们被客户要求撰写关于网络购物用户行为的研究报告,包括一些图形和统计输出。随着网络的迅速发展,依托于网络的购物作为一种新型的消费方式,在全国乃至全球范围内飞速发展电子商务成为越来越多消费者购物的重要途径。我们被客户要求撰写关......
  • R语言基于ARCH模型股价波动率建模分析|附代码数据
    原文链接: http://tecdat.cn/?p=3856原文出处:拓端数据部落公众号 最近我们被客户要求撰写关于ARCH的研究报告,包括一些图形和统计输出。引言金融中一个重要度量是与资产相关的风险,而资产波动率是最常用的风险度量。然而,资产波动率的类型有多种。波动率不能直接观测的性质在波......
  • day29 回溯算法part5 代码随想录算法训练营 47. 全排列 II
    题目:47.全排列II我的感悟:用了一层判断,感觉也挺好用的理解难点:老师的写法,主要是理解used【i】和used[i-1]的概念我说怎么参考答案看不懂呢,它把两个判断放在一起写了。我的代码:用了一层判断classSolution:defpermuteUnique(self,nums:List[int])->List[Lis......
  • C/C++ 宏区分不同系统、编译器、语言版本
    目录区分不同系统区分不同编译器及其版本区分不同语言及其版本参考区分不同系统1)_WIN32,Windows系统_WIN64:32bitand64bit系统M_WIN64:仅64bitWindows系统M_WIN32:仅32bitWindows系统_WINDOWS:GUIApplication_CONSOLE:consoleApplication2)__APPLE__,苹果系统,包括MAC、IOST......
  • 代码随想录算法训练营第二十二天|235. 二叉搜索树的最近公共祖先 ● 701.二叉搜索树
    二叉搜索树的最近公共祖先 题目链接:235.二叉搜索树的最近公共祖先-力扣(LeetCode)思路:只要利用二叉搜索树特性,只要当前节点的值位于要求的两个节点之间,就必定是我们要找的节点。最简单的一集。classSolution{public:TreeNode*lowestCommonAncestor(TreeNode*root,......
  • 常规代码性能优化的总结
    今天同事发开中遇到了一个代码性能优化的问题,原本需求是:从一个数据库中查询某个表数据,存放到datatable中,然后遍历datatable,看这些数据在另一个数据库的表中是否存在,存在的话就要更新,不存在就要插入。就这个需求本身来说很简单,但是随着数据量的增大,之前通过循环遍历的方......
  • 晚上调代码时写对拍程序之——为了不手写平衡树而乱搞的可支持随机访问、快速插入、快
    前言由于需要一个可支持随机访问、快速插入、快速删除的数据结构,但是我除了平衡树实在是想不到别的东西了,于是就乱搞出了一个这样的东西——abstract数组。但是,这玩意好像码量和平衡树差不多......不过!我认为她还是有优点的:相比起平衡树,她应该更不容易出锅?总之,不管怎么样,还是......
  • 代码随想录算法训练营第二十二天 | 450.删除二叉搜索树中的节点, 701.二叉搜索树中的
     450.删除二叉搜索树中的节点 已解答中等 相关标签相关企业 给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。一般来说,删除节点......