gpt4 book ai didi

c++ - Boost.MultiArray 中 multi_array 和 array_view 之间的转换

转载 作者:行者123 更新时间:2023-11-30 04:17:15 46 4
gpt4 key购买 nike

我的问题与 Boost.MultiArray 类有关。我了解如何将 multi_array 对象转换为 array_view 对象,如下代码所示:

        int my_row = 5;
int my_col = 7;
boost::multi_array<int,2> my_matrix(boost::extents[my_row][my_col]);
int *b = new int [my_row*my_col];
int loop = 0;
for(int i=0; i<my_row; i++)
{
for(int j=0; j<my_col; j++)
{
loop = loop+1;
my_matrix[i][j]=loop;
}
}

std::cout<<"The matrix"<<std::endl;
for (int i=0; i<my_row; i++)
{
for(int j=0; j<my_col; j++)
std::cout<<my_matrix[i][j]<<" ";
std::cout<<std::endl;
}

int new_row = 3;
int new_col = 4;
boost::multi_array<int,2>::array_view<2>::type my_view =
my_matrix[boost::indices
[boost::multi_array<int,2>::index_range(0,new_row,1)]
[boost::multi_array<int,2>::index_range(0,new_col,1)]
];

std::cout<<"The view"<<std::endl;
for (int i=0; i<new_row; i++)
{
for(int j=0; j<new_col; j++)
std::cout<<my_view[i][j]<<" ";
std::cout<<std::endl;
}

我的问题是因为 array_view 对象与 multi_array 对象非常相似,有没有办法将 array_view 对象转换成 multi_array 对象?

最佳答案

boost::multi_array有这些采用 array_view 的构造函数:

multi_array(const const_array_view<NumDims>::type& x);
multi_array(const array_view<NumDims>::type& x);

您可以使用如下代码从您的array_view 构造一个multi_array:

boost::multi_array<int,2> array_from_view(my_view);

请注意,新的 multi_array 具有独立于 View 和原始数组的存储空间。

关于c++ - Boost.MultiArray 中 multi_array 和 array_view 之间的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17210117/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com