C++TMP如何将运行时数组解析为可变元模板
C++TMP how to parse runtime array to variadic meta-template?
我已经使我的varadic元模板工作(使用任意数量的int参数)
cout << findBestSum<4,5,6,3,7,20,3,50,1,-1,5>::result << endl; //outputs 103 which is good
现在,我遇到了一个将运行时输入传递到此模板的问题,例如标准的argv(当然,在将其转换为int之后),因为它是一个指针,而指针在编译时计算中不存在。
有没有一种方法可以将输入数组作为单独的参数提取/扩展/解析到模板中?
我当然可以做一些类似的事情
findBestSum<arr[0],arr[1],arr[2]>::result
如果我知道开销中的参数数量,但我不知道。用户甚至可以输入一百万个数字
p.s.只是提醒,我不能这样做:findBestSum<arr>::result
,因为它是一个指针!!编译时没有分配地址
在这种情况下,模板是错误的作业工具,因为在编译时您的数字序列是未知的。
如果您的findBestSum
算法搜索包含最大和的最大子数组(即Kadane算法的最大子阵列问题),并且是O(N)和,则该数组仅在运行时已知,您别无选择,只能在运行时遍历数组的所有元素并执行算法。
根据用户的输入,根据输入值的值范围预先计算输入值的所有可能排列可能是完全不可行的,或者有点是有意义的。这超出了你的问题范围。
相关文章:
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- 在 c++ 中是否允许创建具有运行时边界的数组?
- 运行时C++数组初始化问题
- 如何在运行时在对象数组中动态追加新对象C++并打印它们
- 如何在 Visual Studio C++ 11 中运行时定义二维数组?
- 有没有办法根据命令行参数定义数组大小?运行时与编译时实例化?
- C++ .我正在尝试通过使用开关内的数组来获取用户输入,但是当我运行代码时,它显示分段错误?
- 如何在运行时阻止数组重置
- 运行搜索数组
- 当数组大小在C++中未知时,如何在运行时将对字符串数组的引用作为函数参数传递?
- 由于 2D 数组声明,C++ 14 中的运行时错误
- 为什么C++允许在运行时将数组大小传递给函数以构造固定大小的数组?
- 在函数中创建的数组,编译时还是运行时?
- 在运行时 c++ 更改用类对象填充的数组的大小
- 删除动态数组会导致运行时错误
- 当将多个TypedArrayContents数组加载到V8数组中时(数组数组)时,最后一个元素将覆盖所有元素
- GCC如何分配静态运行的数组长度
- C++内存中运行字节数组
- 运行整数数组所有组合的算法
- 为什么动态内存允许在运行时操作数组