相关疑难解决方法(0)

转置1维数组

所以我有一个带有N个值的一维数组,其中N是一个完美的正方形.我将这个一维数组可视化为二维数组(尽管它不是).例如,具有值的数组int Array = { 0,1,2,3,4,5,6,7,8 }

那是

int *Array = new int [9];                                                                                                                                                                                                    
for ( int i = 0 ; i < 9 ; i ++ )
         Array[i] = i; // For example
Run Code Online (Sandbox Code Playgroud)

打印为

0 1 2
3 4 5 
6 7 8
Run Code Online (Sandbox Code Playgroud)

所以,我想在一维数组中交换位置,以便我得到它的转置,...

例如...

0 3 6
1 4 7
2 5 8
Run Code Online (Sandbox Code Playgroud)

这基本上是相同的一维数组,但交换值使得数组现在是int Array = {0,3,6,1,4,7,2,5,8}

如果我将它缩放到1024*1024维度的数组,逻辑将如何?

c c++ algorithm

8
推荐指数
2
解决办法
6272
查看次数

用于从RGB值数组中切割平面(就地)的算法

我有一个平坦的字节RGB值数组R1 G1 B1 R2 G2 B2 R3 G3 B3 ... Rn Gn Bn.所以我的数据看起来像:

char imageData[WIDTH * HEIGHT * 3];
Run Code Online (Sandbox Code Playgroud)

但我想将WIDTH*HEIGHT数组传递给现有的C库,该库需要这个数据的单个平面.这将只是R值(或只是G,或只是B)的序列.

分配新数组并复制数据(duh)很容易.但是图像非常大.如果它不是一个C库,而是采用某种迭代接口来精细化"切片"遍历,那就太棒了.但是我无法编辑我正在调用的代码......它需要一个指向一块顺序内存的普通旧指针.

但是我有对这个数组的写访问权限.创建一个将其分类为彩色平面的例程是可行的.我还需要一个可以反转的反向转换,但根据定义,将它分类为平面的相同方法可以应用于取消它.

我(在适当的位置)如何有效地将此阵列转换为R1 R2 R3 ... Rn G1 G2 G3 ... Gn B1 B2 B3 ... Bn然后再返回?任何非天真的算法?

c c++ algorithm image-processing slice

7
推荐指数
1
解决办法
1343
查看次数

标签 统计

algorithm ×2

c ×2

c++ ×2

image-processing ×1

slice ×1