gpt4 book ai didi

c++ - 如何将 A*A std::array 拆分为 B*B block ?

转载 作者:太空宇宙 更新时间:2023-11-04 11:24:52 24 4
gpt4 key购买 nike

如果我有一个 std::array<std::array<int, 4>, 4> mydata , 我如何将其分成更小的 block 或 std::array<std::array<int, 2>, 2> , 所以它看起来像这样(视觉上):

enter image description here

其中每种颜色都是一种 std::array<std::array<int, 2>, 2>

我已经阅读了一些问题,但他们并不总是问同样的问题或不完整:

Split array into chunks in C/C++ - 询问如何将一个连续的数据流拆分成更小的连续位,一维

Split an image into 64x64 chunks - 没有为 ProcessChunk 提供来源或解释?

最佳答案

我的做法是完全分割图像。
让我详细说明:

如果您创建新数组,则必须将数组复制到一些新结构上,可能是 std::vectors,因为您在编译时不知道不同的大小。

相反,您可以做的是保持原始结构,并拥有一个区域 vector ,其中一个区域由描述内部正方形的 4 个顶点描述。

struct Area{
std::pair<int,int> topleft;
std::pair<int,int> topright;
std::pair<int,int> bottomleft;
std::pair<int,int> bottomright;
};

vector<Area> areas;
areas.emplace_back({0,0},{0,2},{2,0},{2,2});

如果您需要使用较少的信息,您可以只存储两个角并计算另外两个角,实际上您只需要 4 个整数就可以知道该区域。

关于c++ - 如何将 A*A std::array 拆分为 B*B block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27048878/

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