gpt4 book ai didi

c++ - 提供维度后 boost::extent 对象的类型是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:34:21 24 4
gpt4 key购买 nike

说我有

#include <boost/multi_array.hpp>
using intArray3D = boost::multi_array<int, 3>;

我想创建一堆具有相同形状的 intArray3D:

auto my_shape = boost::extents[3][4][5];
intArray3D xs(my_shape), ys(my_shape), zs(my_shape);

使用 autoboost::extents[3][4][5] 赋值给一个变量很容易,但是我怎样才能具体地找出基础类型?

最佳答案

最重要的是,

  1. 你不必知道
  2. 你也不必使用extents

很多东西只要满足documented criteria就可以接受:

enter image description here

集合概念记录在 that link

Live On Coliru

#include <boost/multi_array.hpp>
#include <iostream>
using intArray3D = boost::multi_array<int, 3>;

void dump_shape(intArray3D const& arr) {
for (unsigned dim = 0; dim < arr.dimensionality; ++dim)
std::cout << arr.shape()[dim] << " ";
std::cout << "\n";
}

int main() {
{
auto my_shape = boost::extents[3][4][5];
intArray3D xs(my_shape), ys(my_shape), zs(my_shape);
dump_shape(xs); dump_shape(ys); dump_shape(zs);
}

{
std::array<int, 3> my_shape { 3, 4, 5 };
intArray3D xs(my_shape), ys(my_shape), zs(my_shape);
dump_shape(xs); dump_shape(ys); dump_shape(zs);
}

{
std::vector<int> my_shape { 3, 4, 5 };
intArray3D xs(my_shape), ys(my_shape), zs(my_shape);
dump_shape(xs); dump_shape(ys); dump_shape(zs);
}

}

打印

3 4 5 
3 4 5
3 4 5
3 4 5
3 4 5
3 4 5
3 4 5
3 4 5
3 4 5

关于c++ - 提供维度后 boost::extent 对象的类型是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46595857/

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