C++ 使用步骤遍历一维数组和二维数组

C++ 使用步骤遍历一维数组和二维数组,c++,arrays,C++,Arrays,以步骤3迭代1D数组(伪2D): arr = new int[height * width * 3]; for (int i = 0; i < height * width * 3; i+=3) { arr[i] = 1; } arr=newint[height*width*3]; 对于(int i=0;i

以步骤3迭代1D数组(伪2D):

arr = new int[height * width * 3];
for (int i = 0; i < height * width * 3; i+=3) {
  arr[i] = 1;   
}
arr=newint[height*width*3];
对于(int i=0;i<高度*宽度*3;i+=3){
arr[i]=1;
}
我已经试过了,但我得到的是三分之一的专栏:

for (int y = 0; y < height * 3; y++) {
    for (int x = 0; x < width; x+=3) {
        arr[x + width * y] = 1;
    }
}
for(int y=0;y
假设单元格的“大小”为3个条目,则应在内环上使用
*3
。否则,每行将丢失三分之二的单元格。 您还需要将
width
乘以3才能得到正确的行

for (int y = 0; y < height; y++) {
    for (int x = 0; x < width * 3; x+=3) {
        arr[x + width * 3 * y] = 1;
    }
}
另一种解决方案是使用
struct
创建更大的“项”,例如:

typedef struct { int r, int g, int b } t_rgb;
t_rgb* arr = new t_rgb[height * width];
for (int y = 0; y < height; y++) {
    for (int x = 0; x < width; x++) {
        arr[x + width * y].r = 1;
    }
}
typedef结构{intr,intg,intb}trgb;
t_rgb*arr=新的t_rgb[高度*宽度];
对于(int y=0;y

您可以将其用作常规数组(编译器为您执行所有计算)。这也使代码中发生的事情更加清晰。

假设单元格的“大小”为3个条目,则应在内部循环中使用
*3
。否则,每行将丢失三分之二的单元格。 您还需要将
width
乘以3才能得到正确的行

for (int y = 0; y < height; y++) {
    for (int x = 0; x < width * 3; x+=3) {
        arr[x + width * 3 * y] = 1;
    }
}
另一种解决方案是使用
struct
创建更大的“项”,例如:

typedef struct { int r, int g, int b } t_rgb;
t_rgb* arr = new t_rgb[height * width];
for (int y = 0; y < height; y++) {
    for (int x = 0; x < width; x++) {
        arr[x + width * y].r = 1;
    }
}
typedef结构{intr,intg,intb}trgb;
t_rgb*arr=新的t_rgb[高度*宽度];
对于(int y=0;y

您可以将其用作常规数组(编译器为您执行所有计算)。这也使代码中发生的事情更加清晰。

假设单元格的“大小”为3个条目,则应在内部循环中使用
*3
。否则,每行将丢失三分之二的单元格。 您还需要将
width
乘以3才能得到正确的行

for (int y = 0; y < height; y++) {
    for (int x = 0; x < width * 3; x+=3) {
        arr[x + width * 3 * y] = 1;
    }
}
另一种解决方案是使用
struct
创建更大的“项”,例如:

typedef struct { int r, int g, int b } t_rgb;
t_rgb* arr = new t_rgb[height * width];
for (int y = 0; y < height; y++) {
    for (int x = 0; x < width; x++) {
        arr[x + width * y].r = 1;
    }
}
typedef结构{intr,intg,intb}trgb;
t_rgb*arr=新的t_rgb[高度*宽度];
对于(int y=0;y

您可以将其用作常规数组(编译器为您执行所有计算)。这也使代码中发生的事情更加清晰。

假设单元格的“大小”为3个条目,则应在内部循环中使用
*3
。否则,每行将丢失三分之二的单元格。 您还需要将
width
乘以3才能得到正确的行

for (int y = 0; y < height; y++) {
    for (int x = 0; x < width * 3; x+=3) {
        arr[x + width * 3 * y] = 1;
    }
}
另一种解决方案是使用
struct
创建更大的“项”,例如:

typedef struct { int r, int g, int b } t_rgb;
t_rgb* arr = new t_rgb[height * width];
for (int y = 0; y < height; y++) {
    for (int x = 0; x < width; x++) {
        arr[x + width * y].r = 1;
    }
}
typedef结构{intr,intg,intb}trgb;
t_rgb*arr=新的t_rgb[高度*宽度];
对于(int y=0;y

您可以将其用作常规数组(编译器为您执行所有计算)。这也使您的代码中发生的事情更加清晰。

您到底想实现什么?在RGB图像中设置通道? 我通常是这样做的:

for (int y = 0; y < height; y++)
    for (int x = 0; x < width; x++)
        arr[(x + width * y) * 3] = 1;
for (int y = 0; y < height; y++)
    for (int x = 0; x < width; x++)
    {
        size_t base = (x + width * y) * 3;
        arr[base + 0] = r;
        arr[base + 1] = g;
        arr[base + 2] = b;
    }
for(int y=0;y
通常,要设置RGB值,只需添加如下偏移:

for (int y = 0; y < height; y++)
    for (int x = 0; x < width; x++)
        arr[(x + width * y) * 3] = 1;
for (int y = 0; y < height; y++)
    for (int x = 0; x < width; x++)
    {
        size_t base = (x + width * y) * 3;
        arr[base + 0] = r;
        arr[base + 1] = g;
        arr[base + 2] = b;
    }
for(int y=0;y
你到底想完成什么?在RGB图像中设置通道? 我通常是这样做的:

for (int y = 0; y < height; y++)
    for (int x = 0; x < width; x++)
        arr[(x + width * y) * 3] = 1;
for (int y = 0; y < height; y++)
    for (int x = 0; x < width; x++)
    {
        size_t base = (x + width * y) * 3;
        arr[base + 0] = r;
        arr[base + 1] = g;
        arr[base + 2] = b;
    }
for(int y=0;y
通常,要设置RGB值,只需添加如下偏移:

for (int y = 0; y < height; y++)
    for (int x = 0; x < width; x++)
        arr[(x + width * y) * 3] = 1;
for (int y = 0; y < height; y++)
    for (int x = 0; x < width; x++)
    {
        size_t base = (x + width * y) * 3;
        arr[base + 0] = r;
        arr[base + 1] = g;
        arr[base + 2] = b;
    }
for(int y=0;y
你到底想完成什么?在RGB图像中设置通道? 我通常是这样做的:

for (int y = 0; y < height; y++)
    for (int x = 0; x < width; x++)
        arr[(x + width * y) * 3] = 1;
for (int y = 0; y < height; y++)
    for (int x = 0; x < width; x++)
    {
        size_t base = (x + width * y) * 3;
        arr[base + 0] = r;
        arr[base + 1] = g;
        arr[base + 2] = b;
    }
for(int y=0;y
通常,要设置RGB值,只需添加如下偏移:

for (int y = 0; y < height; y++)
    for (int x = 0; x < width; x++)
        arr[(x + width * y) * 3] = 1;
for (int y = 0; y < height; y++)
    for (int x = 0; x < width; x++)
    {
        size_t base = (x + width * y) * 3;
        arr[base + 0] = r;
        arr[base + 1] = g;
        arr[base + 2] = b;
    }
for(int y=0;y
你到底想完成什么?在RGB图像中设置通道? 我通常是这样做的:

for (int y = 0; y < height; y++)
    for (int x = 0; x < width; x++)
        arr[(x + width * y) * 3] = 1;
for (int y = 0; y < height; y++)
    for (int x = 0; x < width; x++)
    {
        size_t base = (x + width * y) * 3;
        arr[base + 0] = r;
        arr[base + 1] = g;
        arr[base + 2] = b;
    }
for(int y=0;y
通常,要设置RGB值,只需添加如下偏移:

for (int y = 0; y < height; y++)
    for (int x = 0; x < width; x++)
        arr[(x + width * y) * 3] = 1;
for (int y = 0; y < height; y++)
    for (int x = 0; x < width; x++)
    {
        size_t base = (x + width * y) * 3;
        arr[base + 0] = r;
        arr[base + 1] = g;
        arr[base + 2] = b;
    }
for(int y=0;y