- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
有一个很好的 C++ 解决方案(实际上是 2 个解决方案:递归和非递归),到 Cartesian Product of a vector of integer vectors .为了说明/简单起见,让我们只关注非递归版本。
我的问题是,如何用模板概括这段代码,以获取如下所示的齐次 vector std::tuple
:
{{2,5,9},{"foo","bar"}}
并生成一个齐次 vector 的tuple
{{2,"foo"},{2,"bar"},{5,"foo"},{5,"bar"},{9,"foo"},{9, “酒吧”}}
如果它让生活更轻松,让我们假设输入中的内部 vector 都是齐次的。因此不允许这样的输入:{{5,"baz"}{'c',-2}}
EDIT将输入从锯齿状 vector 更改为元组
最佳答案
更简单的递归解决方案。它将 vector 作为函数参数,而不是元组。此版本不构建临时元组,而是使用 lambdas。现在它不再进行不必要的复制/移动,并且似乎得到了成功的优化。
#include<tuple>
#include<vector>
// cross_imp(f, v...) means "do `f` for each element of cartesian product of v..."
template<typename F>
inline void cross_imp(F f) {
f();
}
template<typename F, typename H, typename... Ts>
inline void cross_imp(F f, std::vector<H> const& h,
std::vector<Ts> const&... t) {
for(H const& he: h)
cross_imp([&](Ts const&... ts){
f(he, ts...);
}, t...);
}
template<typename... Ts>
std::vector<std::tuple<Ts...>> cross(std::vector<Ts> const&... in) {
std::vector<std::tuple<Ts...>> res;
cross_imp([&](Ts const&... ts){
res.emplace_back(ts...);
}, in...);
return res;
}
#include<iostream>
int main() {
std::vector<int> is = {2,5,9};
std::vector<char const*> cps = {"foo","bar"};
std::vector<double> ds = {1.5, 3.14, 2.71};
auto res = cross(is, cps, ds);
for(auto& a: res) {
std::cout << '{' << std::get<0>(a) << ',' <<
std::get<1>(a) << ',' <<
std::get<2>(a) << "}\n";
}
}
关于c++ - TMP : how to generalize a Cartesian Product of Vectors?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13813007/
崩溃报告: *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[_UIConc
我的 Google Charts 信息中心有问题。目前一切正常,除了柱形图在 Y 轴上显示字符串而不是整数。 我发现 Google 图表页面上的文档很难理解,所以如果我的代码中有错误,或者如果有更简单
我在 VS 项目编译中收到警告。尽管编译成功,但我无法获得文件的输出。您知道如何设置上述每一项吗? 它是在谈论哪个命令和outfile文件?应该给出什么路径? //testlib.h #include
有问题的设置: 我知道: xcode构建 -parallelizeTargets -maximum-concurrent-test-device-destinations NUMBER -maximu
我开始学习 UML,并且有一个关于 Actor 泛化的问题: 假设我正在为某所大学的某种应用程序编写用例图。我已经确定有两个 Actor ;学生和老师。 现在,为了简单起见,假设要求相当简单(对我的问
我经常需要实现一个能够根据用户命令切换其行为的对象。例如,这可能是连接到 PC 并由用户通过 GUI 控制的类表示设备的情况。更一般地说,设备必须独立存在,有自己的操作调度。 由于我想从特定设备类中“
题目地址:https://leetcode-cn.com/problems/generalized-abbreviation/ 题目描述 Write a function to generate
我刚刚在我的程序中添加了一个 ui 搜索栏,每次我重新运行该程序时,我都会收到错误消息 -[一般] 与守护程序的连接无效尽管如此,我的应用程序仍能完美运行,而且我似乎无法分辨出哪里出了问题。 有谁知道
这可能是一个简单的问题,但我找不到解决方案。我有一个带有 PostDate 列的 Excel 电子表格,其值为:VLOOKUP(E2,upload!A:H,2,FALSE)它显示为日期。我将此电子表格
我一直在尝试学习使用 Isabelle 2016。虽然原则上我喜欢异步证明检查的想法,但我不喜欢 Isabelle/jEdit 的原因有很多,其中最严重的是它使用了太多内存(为了我)。 如果我能在 I
我想弄清楚如何修改单个产品选项,以便产品管理员可以从下拉列表中选择产品的状况,即新的/二手的。 以下是允许产品管理员手动输入产品条件的代码。 // Enabling and Displaying Fi
这很清楚 destruct H如果 H包含连词或析取。但我无法弄清楚它在一般情况下的作用。它做了一些奇怪的事情,特别是如果 H: a -> b . 一些例子: Lemma demo : forall
这是我项目的例子: [ https://codepen.io/adan96/pen/ExaRgOe][1] 如您所见,我的 html 代码中有三个按钮。每次刷新页面或一段时间后打开项目时,是否应单击第
我有一个方法想将一个自定义枚举类型的数组作为参数。 看起来像这样的东西: public void DoSomething(WhatDoIPutHere[] parameters) 我想将 Enum1[
我正在构建一个网站,用户可以在其中清点项目并向其应用各种属性,例如。照片、网址、评论等。 我有一个包含三个表的数据库结构: users , entries , associations . 这些表具有
我正在寻找有关构建程序的最佳方式的建议。这是我现在所拥有的,以及我在设计中看到的问题: 我有一个带有私有(private)构造函数和 submit() 方法的类,用于仔细控制创建的对象,并将创建的每个
假设我有一个 4 维张量 A,我想按以下方式将它与 3 维张量 B 相乘: C[i,k,a,b] = sum_{j,l} A[i,j,k,l]*B[a,j,b,l] 这是矩阵乘法的推广: z[i,k]
我试图理解最坏情况分析,想知道在最坏情况运行时间分析中使用时是否有某种方式可以解释术语广义示例? 我的第一个想法是它是根据输入的特征来分析性能,但我觉得应该有更正式的方式来解释它,也许使用顺序符号?
NXN 矩阵中的“广义对角线”是 N 个单元格的选择,这样: 从每一行和每一列中只选择一个单元格 每个选定的单元格都包含一个非零值 我正在寻找一种算法来在 O(n^3) 中找到广义对角线。在我看来,以
Realm 新手,我想知道如何使用 RealmSwift 构建树结构... 我倾向于认为这是对文件系统文件夹概念的模仿,所以, class Folder: Object { dynamic v
我是一名优秀的程序员,十分优秀!