问题标签 [boost-multi-array]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 比较 blitz++、犰狳、boost::MultiArray
我对 blitz++、armadillo、boost::MultiArray 与以下代码进行了比较(借自一篇旧帖子)
在windows,VS2010上,结果是
在windows,intel c++上,结果是
奇怪的东西:
要使用 intel c++ 编译器编译 blitz++,blitz/intel/ 文件夹中需要一个名为 bzconfig.h 的文件。但是没有。我只是复制 blitz/ms/bzconfig.h 中的那个。这可能会给出非最佳配置。任何人都可以告诉我如何使用 intel c++ 编译器编译 blitz++?在手册中,它说运行 bzconfig 脚本以获取正确的 bzconfig.h。但我不明白这是什么意思。
非常感谢!
补充一些我的结论:
c++ - 提升 std::vector 的多数组
我是 Boost 的新手(也是 stackoverflow 的新手)并且想要使用向量的多数组。我是这样做的:
在互联网上,我只能找到使用 int、doule 等的多数组示例。是否可以在 mutliarray 中使用 std::vector ?我知道我可以使用 3d 多数组,但我更喜欢向量作为元素。
c++ - Eigen::Matrix vs. boost::multi_array vs. Eigen::Map
在执行相当简单的任务来比较以下性能时,我得到了令人费解的结果:
- 特征::矩阵
- boost::multi_array
- boost::multi_array 使用 Eigen::Map 映射到 Eigen::Matrix
这是我的测试代码的精简版;可以在以下网址找到更完整的版本:http: //pastebin.com/faZ7TvJG。
结果如下:
如果我使用 if 语句跳过每个第二个元素,我会得到以下结果:
检查程序集表明,在顺序访问情况下,Eigen 更快,因为总和变得矢量化,而在使用原始 boost::multi_array 时则不然。
那么我的问题是:
- 为什么 boost::multi_array 没有向量化,而 Eigen::Matrix 是?
- 为什么映射到 Eigen 的 multi_array 比“本机”Eigen 数据结构更快?
对于编译,我使用以下内容:
感谢您的回答。
c++ - 如何从提升多数组中获取最大/最小元素
我想知道一种简单的方法来查找 boost 多数组的最大/最小元素,一个具有 3 个索引的对象,如下所示:
c++ - 嵌套 boost::multi_array?
我有一个模板类,它进行一些计算并返回 multi_array,有点过于简单,如下所示:
使用简单类型实例化类T=double
可以正常工作。现在,我想用“ T=boost::multi_array<double, 1>
”实例化,但是结果类型是boost::multi_array<double, 3>
.
该定义multi_array<multi_array<T, N>, M>>
显然不会导致multi_array<T, N+M>
,它只是一个 N 维 multi_array 元素是 M 维 multi_arrays ...
生成这种类型的想法是由 Boost 手册中所说的
MultiArray 是递归定义的;容器层次模型 MultiArray 的每个级别的容器也是如此。实际上,中间
multi_array
级别的“元素”是 typesubarray
。
可以使用subarray
生成multi_array
具有有效维度的类型N+M
吗?也许以某种方式沿着以下几行:
我正在寻找一个相对干净的解决方案(不是冗长的 hack),如果 multi_array 接口无法做到这一点,我会更好地重新考虑我将要实现的设计。
c++ - 哪个最快?boost::multi_array 还是 std::vector?
哪个最快?一个boost::multi_array
或一个std::vector
?我将(不是恒定的)17.179.869 个元素存储在 3 个维度中,需要在for
循环中非常快速且非常频繁地访问这些元素。最有表现力的会是什么?一个std::vector
或一个boost::multi_array
?
(我不希望它在一秒钟内完成,但我希望它尽可能高效,因为纳秒的差异可以节省大量时间。)
c++ - cpp 多维向量
我想将这些字符串向量存储为 4 维向量。我已经搜索了三天,但我无法决定是否使用多维向量、提升多数组、结构数组……我对 cpp 很陌生,他们很困惑。
我应该为人口稠密的人做些什么?
c++ - 在未指定维数的类中包含 boost::multi_array
我正在创建一个 gridcell 类,它基本上是一个多单元格数组。我希望这个网格单元有任意数量的维度。这意味着在 boost::multiarray 变量的声明中我不能指定模板的第二个参数。具体来说,我的代码如下所示:
具体来说, boost::multi_array * grid; 我希望它在 Gridcell 类构造函数中指定的维数。
有什么建议或替代方案吗?
非常感谢你!
c++ - 在 boost::multi_array 中,子数组的类型是什么?
如果我有一个
以下是哪种类型?
我应该如何在函数接口中定义对它的引用?
c++ - 如何在模板类中为“boost::array_view”创建 typedef
我想要一个与维度无关的模板(对 3d 和 4d 都有用),大多数操作将在第一维剥离的子矩阵上执行。
所以这就是我想要的
wherearray_type
定义了由此类管理的数组index_type
定义了用于索引数组的类型,我想`stride_type
定义该数组的一个具有较少维度的切片。
现在我得到一个错误: