问题标签 [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++ - Boost::multi_array 性能问题
我正在尝试使用以下测试程序将 boost::multi_array 的性能与本机动态分配的数组进行比较:
我得到以下结果:
我不敢相信 multi_arrays 慢得多。谁能发现我做错了什么?
我认为缓存不是问题,因为我正在写入内存。
编辑:这是一个调试版本。根据 Laserallan 的建议,我做了一个发布版本:
更近了。但是 16 比 1 对我来说似乎仍然很高。
好吧,没有明确的答案,但我将继续前进,暂时将我的真实代码保留为本机数组。
接受 Laserallan 的回答,因为这是我测试中最大的缺陷。
谢谢大家。
c++ - 如何分配/复制 Boost::multi_array
我想分配一个 boost::multi_array 的副本。我怎样才能做到这一点。我想将其分配给的对象已使用默认构造函数进行了初始化。
此代码不起作用,因为尺寸和大小不一样
用什么代替m_f = f
?
c++ - 通过带参数的函数调用提升::multi_index 索引
我正在尝试制作一个 boost::multi_index 容器,它使用带有参数的成员函数作为键。
假设我有一个包含多个索引的这些数据项的矩形列表。矩形表示列表中的所有项目通过 get() 具有相同的属性
boost::multi_index 声明类似于
除了BOOST_MULTI_INDEX_CONST_MEM_FUNCT()没有这些特性。复合键仍然适用于成员变量。
我该如何解决这个问题?看起来我不能给 ordered_unique<> 一个 boost::function1
编辑:
经过一番思考,这是我正在尝试做的事情的要点。
boost::multi_index 在编译时确定它的索引特性。如何规避这些功能并使用运行时确定的索引?
c++ - 如何通过引用同一个模板函数来传递一行 boost::multi_array 和 std::vector?
我对这段代码有疑问:
试图用 gcc 编译它,我得到了错误:
当我将函数的第一个参数的类型foo
从Vec&
to更改为 boost::multi_array 时,它按预期工作Vec
,但是 std::vector 是按值传递的,这不是我想要的。如何在不编写两个模板的情况下实现我的目标?
c++ - boost::multi_array 调整大小异常?
我试图弄清楚 boost::multi_array 构造函数或 resize 方法是否会引发 bad_alloc 异常(或其他一些指示分配或调整大小失败的异常)。我在任何地方的文档中都找不到此信息。
澄清(从评论中添加):
这是一种科学算法,如果分配失败,它可以退回到内存密集度较低(较慢)的方法。基本上,有两个动态分配的 3 维数组来保存查询中所有基因对之间的“距离”(相关性),以及针对大量数据集中的每一个的交叉验证集中的所有基因。较慢的方法会根据需要重新计算每个距离。这是针对现有 Java 实现的 C++ 版本的,它实现了这两种方法,并且会退回到内存不足异常。我真的不希望内存不足。
c++ - Boost.MultiArray 初学者:如何获得具有动态内部数组大小的 4D 数组?
我想存储某种距离矩阵(2D),其中每个条目都有一些选择(不同的坐标)。所以我想访问距离,例如 x_alt=3 的 x=1 和 y_alt=1 的 y=3,查看带有数组 [1][3][3][1] 的 4-dim 多数组。
需要注意的重要事项如下:对于外部数组的不同值,最内部的 2 个数组/向量的大小不同。
在我计算值的第一个初始化步骤之后,不再需要修改!
使用 stl-vectors 应该很容易做到这一点:
我可以动态地迭代外部 2 维并根据需要填充内部 2 维的替代项(例如使用 push_back())。
问题:
- Boost.MultiArray 是否可以定义这种数据结构?如何?
- 使用 Boost.MultiArray 而不是嵌套向量是个好主意吗?性能(尤其是查找!(内存布局))?易于使用?
感谢您的任何意见!
萨沙
PS:boost 文档对我没有帮助。也许可以使用 multi_array_ref 将已经确定大小的数组放入整个 4D 结构中?
编辑: 目前我正在考虑另一种方法:将备选方案展平-> 一个更大的矩阵,其中包含备选方案之间的所有距离。然后我只需要计算每个节点的备选数量,建立前缀总和(描述矩阵位置/移位),然后可以分两步访问信息。
但我的问题仍然悬而未决。
c++ - boost::multi_array 视图和子数组有什么区别
查看文档后,我无法弄清楚这一点。
我可以编写代码,例如
然后我可以通过类型data_2d_subarray_t
或访问二维切片data_2d_view_t
。
它们之间有什么区别?
我可以用一个做什么而我不能用另一个做什么?
是否有任何性能差异?
非常感谢您向我澄清这一点。最好的问候,罗德里戈布。
c++ - boost::multi_index_container 编译错误,由于索引 typedef'ing 上的类型不完整
我正在使用 boost::multi_index_container (如下),并且在尝试对索引进行 typedef 时遇到编译错误:
错误详情:
尝试了使用的变体,typename
但template
我想我做得不对(因为我没有正确理解问题,无法正确解决它)。
非常感激任何的帮助。
谢谢。
PS:我正在使用'g++(GCC)4.2.4(Ubuntu 4.2.4-1ubuntu4)'和'boost-1.42'。
c++ - 如何遍历 boost::multi_array
我一直在研究 boost::multi_array 库,以寻找一个允许您在单个 for 循环中遍历整个multi_array 的迭代器。
我认为该库中没有任何这样的迭代器。(在那里找到的迭代器允许您遍历 multi_array 的单个维度)
我错了吗?
如果没有,是否有任何库定义了这样的迭代器?
进入细节,我想写一些类似的东西:
并获得一个重复 3x4x2 次的循环
c++ - 使用 boost multi_array 实例化结构
我有一个扩展抽象类的结构,然后我在里面添加了一个 boost multi_array 作为变量,我收到以下错误。
错误:不能将变量“
mrs
”声明为抽象类型,因为以下虚函数是纯的zi::concurrency::runnable