- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
最佳-6ren">
我如何转换这种类型:
std::tuple<T0, T1, ..., TN1, TN>
进入这个:
std::tuple<
std::function<T0()>,
std::function<T1(T0)>,
std::function<T2(T0, T1)>,
...
std::function<TN(T0, ..., TN1 )>
>
最佳答案
正确的 ...
是不够的,但您始终可以将模式匹配(即部分特化)与递归一起使用:
#include <tuple>
#include <functional>
#include <cstdlib>
// A type to store list of integers
template <size_t... ns>
struct integers
{
template <size_t n>
using push_back = integers<ns..., n>;
};
// This generates 'integers<0, 1, 2, ..., n-1>'
template <size_t n>
struct iota
{
typedef typename iota<n-1>::type::template push_back<n-1> type;
};
template <>
struct iota<0>
{
typedef integers<> type;
};
// Put a type to the front of the argument list
template <typename T, typename U>
struct push_front;
template <typename T, typename R, typename... A>
struct push_front<R(A...), T>
{
typedef R type(T, A...);
};
// This converts 'std::tuple<T0, T1, ..., TN>' to the function type
// 'TK(T0, T1, ..., TK-1)' where K is the first parameter
template <size_t, typename...>
struct slice;
template <size_t end, typename First, typename... Rest>
struct slice<end, First, Rest...>
{
typedef typename push_front<typename slice<end-1, Rest...>::type, First>::type type;
};
template <typename First, typename... Rest>
struct slice<0, First, Rest...>
{
typedef First type();
};
// This calls 'slice' on T... for all integers in the list.
template <typename T, typename U>
struct triangularize_impl;
template <typename... T, size_t... n>
struct triangularize_impl<std::tuple<T...>, integers<n...>>
{
typedef std::tuple<std::function<typename slice<n, T...>::type>...> type;
};
// This is a wrapper of 'triangularize_impl'.
template <typename T>
struct triangularize;
template <typename... T>
struct triangularize<std::tuple<T...>>
{
typedef typename triangularize_impl<std::tuple<T...>, typename iota<sizeof...(T)>::type>::type type;
};
作为demo,我们在g++ 4.7的时候写
triangularize<std::tuple<int, float, double, char>>::type d = 0;
错误信息显示
error: conversion from ‘int’ to non-scalar type
‘triangularize<std::tuple<int, float, double, char> >::type {aka
std::tuple<std::function<int()>,
std::function<float(int)>,
std::function<double(int, float)>,
std::function<char(int, float, double)> >}’
requested
显示代码是正确的。
关于c++ - 将元组转换为 "triangular"元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9132487/
我发现很难提出问题,但我想找到一种聪明的方法(不使用循环)来获得以下结果: > my.vector = letters[1:6] > print(my.vector) [1] "a" "b" "c"
我如何转换这种类型: std::tuple 进入这个: std::tuple, std::function, std::function, ... std::function > 最佳
我很难在 SQL 中得到一个 - 看似简单 - 的权利。我正在使用 MS Access,但我想这并不重要。 我的数据结构如下所示: 所以tblA有“产品”,tblB “组件”和tblC “模块”。这显
我想要将一组子图分为三行,第一行有一个子图,第二行有两个,第三行有三个。我做了以下事情: fig, axes = plt.subplots(figsize=(10, 10), sharex=True,
我正在尝试创建悬停菜单。将其悬停在菜单项中会出现一个三 Angular 形。但是当我进入下拉菜单时,它就消失了。 .navbar-wrapper .col-lg-8 ul li a:hover{
这仅涉及多边形面(具有超过 4 条边的对象面).. 在 3DSMAX 中,.OBJ 有 3 种导出模式:三 Angular 形、四边形和多边形。我已经进行了多次测试,并使用两个可用的工作流程(使用 O
我正在尝试创建一个直 Angular 三棱柱。 到目前为止,这是我的代码: var triangleGeometry = new THREE.Geometry(); triangleGeometry.
我想运行一个模拟,该模拟使用下限 A、模式 B 和上限 C 的三角概率分布生成的值作为参数。如何在 Python 中生成该值?对于这个分布,是否有像 expovariate(lambda)(来自随机)
我正在尝试使用 DAC 和 DMA 生成频率为 8kHz 的三角波。使用定时器触发 DAC,以便 DAC 速度为 1 MSPS。我正在研究 stm32L476 发现板。我使用 stm32CUBEMX
Project Euler problem 18要求我们找到三角形网格中从上到下总和最大的路线。 我的程序应该能够接受如下所示的输入。测试用例的数量 (2) 出现在第一行,然后对于每个测试用例给出行数
这是 Codility 的三角问题: A zero-indexed array A consisting of N integers is given. A triplet (P, Q, R) is
我正在添加一个新函数,如果它是上三角形,则将 DataFrame 转换为下三角形,反之亦然。我使用的数据总是有前两行只用第一个索引填充。 我尝试使用这个问题的解决方案 Pandas: convert
编辑: 这个问题已经解决了。如果您想帮助解决其他问题,请访问 Java Biasing Random Numbers in a Triangular Array . 我在玩乘法游戏,所以我选择了 0
我主要使用 Armadillo 来处理对称矩阵和三角形矩阵。我希望在内存存储方面保持高效。然而,似乎没有其他方法,只能创建一个新的垫子并用零(对于三角形)或重复项(对于对称)填充矩阵的下/上部分。 是
我正在编写一些操纵 3D 三角形网格的代码。导入网格数据后,我需要“统一”空间中同一点的顶点。 我一直假设 numpy 数组是存储和操作数据的最快方式,但我似乎无法找到一种既能快速构建顶点列表又能避免
我是一名优秀的程序员,十分优秀!