”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > C ++元图可以用于动态创建编译时静态阵列吗?

C ++元图可以用于动态创建编译时静态阵列吗?

发布于2025-02-06
浏览:434

Can C   Metaprogramming Be Used for Dynamically Creating Compile-Time Static Arrays? 
在C

问题中以编译时间创建静态数组的问题介绍

传统上,可以在Compile Time中定义静态数组,大小数组。但是,在某些情况下,希望在编译时以编程方式分配值。本文探讨了元编程技术,以实现静态数组的这种动态创建。

问题1:使用C 0x功能编程分配值

问题2:选择性值分配

可以在编译时选择性分配值,可以使用variadic模板和元函数的组合。 metafunc模板用作基于其索引的一个值序列的参数包。然后,Generate_Array模板可以使用生成的值创建所需大小的数组。

template struct_t index> struct metafunc {enum {num {value = index 1}; }; 模板类f> struct generate_array { typedef typename generate_array_impl ::结果结果; }; 模板 f类,unsigned ... args> struct generate_array_impl { typedef typename generate_array_impl ::结果结果; }; 模板

Usage Example

void test() { const size_t count = 5; typedef generate_array ::结果a; for(size_t i = 0; i 此示例定义了一个大小5的静态数组,使用metafunc metafunction在编译时间分配的值{1,2,2,3,4,5}。

最新教程 更多>
  • 可以在纯CS中将多个粘性元素彼此堆叠在一起吗?
    可以在纯CS中将多个粘性元素彼此堆叠在一起吗?
    </main> <section> ,但无法使其正常工作,如您所见。任何洞察力都将不胜感激! display:grid; { position:sticky; top:1em; z-index:1 1 ; { { { pos...
    编程 发布于2025-02-06
  • 为什么在C#中不支持抽象静态方法?
    为什么在C#中不支持抽象静态方法?
    在C#静态方法:更深层的外观静态方法与实例方法不同,因为它们不需要它们。将访问的对象实例化。它们是通过班级名称而不是通过对象引用来调用的。为静态方法调用生成的中间语言(IL)代码直接名称定义该方法的类,无论调用类别如何。 args) { b.test(); } }...
    编程 发布于2025-02-06
  • 如何创建具有固定宽度右列和流体左列的两列布局?
    如何创建具有固定宽度右列和流体左列的两列布局?
    2-column div布局:实现固定宽的右列和流体左列右列具有固定宽度的两列布局,而左列则动态调整到可用空间。 在维持左列中的流动性时,请按照以下方式建立固定宽度的圆柱指南:在左列上删除float:从左列(#content)删除float属性(#content)。 &&&]将右列(#rig...
    编程 发布于2025-02-06
  • 为什么使用固定定位时,为什么具有100%网格板柱的网格超越身体?
    为什么使用固定定位时,为什么具有100%网格板柱的网格超越身体?
    网格超过身体,用100%grid-template-columns 问题:考虑以下CSS和HTML: position:fixed; grid-template-columns:40%60%; grid-gap:5px; 背景:#eee; 当位置未固定时,网格将正确显示。但是,当...
    编程 发布于2025-02-06
  • 如何使用PHP从XML文件中有效地检索属性值?
    如何使用PHP从XML文件中有效地检索属性值?
    从php 您的目标可能是检索“ varnum”属性值,其中提取数据的传统方法可能会使您感到困惑。 - > attributes()为$ attributeName => $ attributeValue){ echo $ attributeName,'=“',$ at...
    编程 发布于2025-02-06
  • 如何使用替换指令在GO MOD中解析模块路径差异?
    如何使用替换指令在GO MOD中解析模块路径差异?
    克服go mod中的模块路径差异 coreos/bbolt:github.com/coreos/ [email受保护]:解析go.mod:模块将其路径声明为:go.etcd.io/bbolt `要解决此问题,您可以在go.mod文件中使用替换指令。只需在go.mod的末尾添加以下行:[&& &...
    编程 发布于2025-02-06
  • 如何在Java列表中有效计算元素的发生?
    如何在Java列表中有效计算元素的发生?
    计数列表中的元素出现在列表 中,在java编程中,列举列表中列举元素出现的任务来自列表。为此,收集框架提供了全面的工具套件。在这种情况下,Batocurrences变量将保持值3,代表动物列表中的“ BAT”出现的数量。 &&& [此方法是简单的,可以得出准确的结果,使其成为计算列表中元素出现的理...
    编程 发布于2025-02-06
  • 如何使用char_length()在mySQL中按字符串长度对数据进行排序?
    如何使用char_length()在mySQL中按字符串长度对数据进行排序?
    [2使用内置的char_length()function。 char_length()和length() 此查询将从指定的表中检索所有行,并基于上升顺序对它们进行排序指定列的字符长度。带有更长字符串的行将出现在结果的底部。
    编程 发布于2025-02-06
  • 如何通过爪哇的目录树迭代?
    如何通过爪哇的目录树迭代?
    通过Java 在使用目录时的一个常见任务之一是通过目录中的所有文件和目录在指定目录。这包括子目录,可全面访问整个目录树。 In Java, there are standard approaches to achieve this functionality.File#isDirectory()...
    编程 发布于2025-02-06
  • 如何克服PHP的功能重新定义限制?
    如何克服PHP的功能重新定义限制?
    克服PHP的函数重新定义限制在PHP中,多次定义一个相同名称的函数是一个no-no。尝试这样做,如提供的代码段所示,将导致可怕的“不能重新列出”错误。 // error:“ coss redeclare foo()” 但是,php工具腰带中有一个隐藏的宝石:runkit扩展。它使您能够灵活地...
    编程 发布于2025-02-06
  • 如何使用FormData()处理多个文件上传?
    如何使用FormData()处理多个文件上传?
    )处理多个文件输入时,通常需要处理多个文件上传时,通常是必要的。可以将fd.append("fileToUpload[]", files[x]);方法用于此目的,允许您在单个请求中发送多个文件。 初始尝试 在JavaScript中,一种常见方法是:); 但是,此代码仅处理第一...
    编程 发布于2025-02-06
  • 在避难化期间,如何处理模棱两可的JSON数组和对象?
    在避难化期间,如何处理模棱两可的JSON数组和对象?
    JSON 反序列化:处理不明确的数组和对象 在处理 JSON 数据时,经常会遇到结构不一致的情况。某些属性在一个实例中可能表示为数组,而在另一个实例中则表示为对象。这在反序列化过程中可能会导致问题,尤其是在使用类型安全类时。 问题: 考虑 Facebook 返回的以下 JSON 数据: 墙面帖子(...
    编程 发布于2025-02-06
  • 对象拟合:IE和Edge中的封面失败,如何修复?
    对象拟合:IE和Edge中的封面失败,如何修复?
    解决此问题,我们采用了一个巧妙的CSS解决方案来解决问题:高度:100%; 高度:auto; 宽度:100%; //对于水平块 ,使用绝对定位将图像定位在中心,以object-fit:object-fit:cover in IE和edge消除了问题。现在,图像将按比例扩展,保持所需的效果而不会失...
    编程 发布于2025-02-06
  • JavaScript可以捕获并将网页屏幕截图发送到服务器吗?
    JavaScript可以捕获并将网页屏幕截图发送到服务器吗?
    在Web开发领域中,使用javascript 捕获WebPage ScreenShots 问题,该问题出现了:是否可行,可以使用Javascript scretenshots使用JavaScript scretenshots并将它们传输回服务器?虽然浏览器安全考虑可能不是HTA环境中的主要问题,但...
    编程 发布于2025-02-06
  • 如何从PHP服务器发送文件?
    如何从PHP服务器发送文件?
    将文件发送到user
    编程 发布于2025-02-06

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3