【发布时间】:2016-06-16 15:06:10
【问题描述】:
我到底想要什么:我有一对类型未知且参数数量未知的元组,但这两个元组的类型和变量计数完全相同,例如:
std::pair<std::tuple<Ts...>, std::tuple<Ts...>>
我们称这些元组为 A 和 B
现在我想通过以下方式从这两个具有完全相同的类型和参数计数 (std::tuple<Ts...>) 的新元组中创建一个新元组:
1.为一个元素随机选择元组 A 或 B(我想我可以通过调用 std::experimental::rand_int(0,1) 或另一个生成器来做到这一点)。
2。将此元素放在新元组中(我们称之为 C)(也许 std::experimental::apply 可能有助于指出 2. 和 3. >?)
3。重复步骤 1-2,直到元组 A 和 B 结束
示例:
A = std::tuple<double, int, long, int> {2.7, 1, 22, 4};
B = std::tuple<double, int, long, int> {12.4, 7, -19, 18};
算法后我想接收,例如:
C = std::tuple<double, int, long, int> {12.4, 1, 22, 18};
(或遵循此方案的 A 和 B 的任何其他组合)
【问题讨论】:
-
只是递归地做。你需要代码吗?
-
@SergeyA 因为我的 C++ 理论比较好,而且到目前为止还没有太多实践,如果你有足够的时间,这对我很有帮助。
-
您提供的建议似乎还可以,您到底坚持哪一部分?
-
我会提供几个代码:)
-
@GuyGreer 使用 std::experimental::apply 获取递归算法,它接受两个元组并随机化是从 A 还是从 B 中选择元素并将其放入元组 C 中。
标签: c++ c++11 random tuples c++14