问题标签 [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.

0 投票
1 回答
132 浏览

c++ - 相同类型但具有不同维度的 boost::multi_array 的容器

我需要的是创建一个可以容纳相同类型但具有不同维度的 boost::multi_array 的类

假设有一个或多个这样的 Double 数组

我需要一个可以容纳上述所有类型的容器类,以便以后在需要时能够遵循正确的类型

就像是

然后使用某种模板逻辑取回对数组的引用

在同一代码块中

这可以使用模板吗?

0 投票
1 回答
280 浏览

boost - boost::multi_array 的内存大小

我有一个 3 维的 boost::multi_array

有没有方法来计算 newArr 的大小或者我应该只使用

他们会一样吗?(我希望 multi_array 有一点控制器数据)

0 投票
2 回答
3698 浏览

c++ - 如何正确初始化对象的boost multi_array?

我惊讶地发现,boost::multi_array它的初始元素分配似乎与std::vector. 它似乎没有用唯一的元素填充每个元素(使用其默认值或默认构造函数)。我很难找到有关此的更多信息。

有没有办法让multi_array每个元素都有一个独特的对象来填充自己?

例如,考虑以下情况:

这导致输出:

为什么构造函数只调用一次multi_array?如何multi_array用唯一的对象“填充”(使用A的默认构造函数)?

0 投票
1 回答
730 浏览

c++ - for_each 算法循环 boost::multi_array

之前在这里提出过相关问题,但我还是没有找到满意的答案,所以我会尽力解释我的问题,希望有人能赐教。

我目前正在使用 boost::multi_array 编写一些代码,并且代码本身也是维度无关的。我需要遍历存储在 multi_array 中的所有元素并对它们做一些事情。我希望以类似 STL 的方式执行此操作:

或类似的东西。其他问题向我指出了 boost 页面本身的一个示例:

for_each 示例
for_each 实现

这或多或少正是我想要的。当人们试图简单地将这段代码导入一个更大的程序时,问题就来了。人们自然希望将函数本身包装在某个命名空间中,并使用例如 C++ 函数作为函数对象。执行这两个中的任何一个都会为编译器创建模板查找问题。

有谁知道我如何解决模板查找问题,或者另一种方法(希望同样漂亮)?

附加信息:

将 for_each 定义包装在命名空间中时出现编译错误

在示例中使用 std::function 对象而不是 times_five 对象时,会得到基本相同的编译错误。

使用 clang 版本 3.4-1ubuntu3 编译。

0 投票
2 回答
1092 浏览

c++ - 调整 boost::multi_array 的大小以匹配另一个

我需要将一个 multi_array 的大小调整为另一个的大小。

在 Blitz++ 中,我可以做到

arr1.resize(arr2.shape());

是否有类似长度的 multi_array 解决方案?因为

arr1.resize(boost::extents[arr2.shape()[0]][arr2.shape()[1]]);

似乎有点漫长和艰辛。

0 投票
1 回答
229 浏览

c++ - 使用 boost multi_array 迭代器在数组元素之间赋值

在使用 gcc 4.8.4 的 Kubuntu 14.04 系统上工作时,我遇到了以下问题:

使用 std:vector,我可以通过迭代器在向量元素之间分配:

使用 boost multi_array,这会失败:

我可以使用不同的习语来解决这个问题

但是我想与 multi_array 一起使用的代码是使用不起作用的类型的赋值编写的。我错过了什么?

0 投票
1 回答
226 浏览

c++ - boost_multi 数组太大?bad_alloc 错误

我正在编写一个程序来测试一个功能。但是,当我声明具有一定大小的 boost::multi_array 时出现错误。我收到以下错误:

在抛出 'std::bad_alloc' what() 的实例后调用终止:std::bad_alloc

我的代码如下所示:

如果我声明 2D multi_array 或声明大小为 10x10x10 和 100x100x100 的 3D multi_array,我不会收到错误消息。

有谁知道解决这个问题?这个问题与编译器有关吗?

我使用 Qt creator 执行代码并使用 MinGW 编译器。

稍后在我的项目中,我将使用维度为 12/13 的数组,每个维度的长度都在 100 到 1000 之间,所以我真的需要它来工作。

提前致谢!

0 投票
0 回答
100 浏览

c++ - 如何在变量中分配 boost::indices?

我正在尝试将 a 存储boost::indices在一个变量中。据我所知,这会产生一种index_gen类型。但是,index_gen似乎在 中进行了模板boost::detail化,但模板参数未暴露于multi_array::index_gen,并且它们似乎默认为<0,0>,这会产生您将在下面看到的错误:

我尝试了以下方法:

错误是:

关于如何存储这个索引对象的任何想法?

0 投票
0 回答
98 浏览

c++ - 为什么`multi_array`中的`index_gen`是`boost::detail::multi_array::index_gen<0,0>`

这个讨论让另一个问题。似乎index_genin multi_array(aka boost::multi_array::index_gen) 设置为boost::detail::multi_array::index_gen<0,0>,我原以为它是 的模板参数在boost::detail::multi_array::index_gen<Dim,Dim>哪里。谁能解释为什么使用这种类型?Dimmulti_array<0,0>

0 投票
1 回答
397 浏览

c++ - 从 multi_array 中提取子数组

我正在尝试从 multi_array 中提取子数组。对于这个演示,我们假设没有折叠维度(即子数组的维度与原始数组相同)。我想我正在正确地构建一个具有请求范围的视图(虽然很尴尬......),但是现在如何将数据从请求的索引(也就是视图的所有索引)复制到子数组中?这是一个大纲: