按行、列和深度顺序打印多维矢量

printing multidimensional vector in rows , cols and depth order

本文关键字:打印 顺序 深度 按行      更新时间:2023-10-16

我正在尝试按行x列x深度的顺序打印矢量的3D阵列,但结果有所不同。例如,我想打印3x2x5矢量数组,我的代码输出为:

1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1

输出是这样的:2(行)x5(列)x3,在我看来是错误的

这是我的密码。。。

#include <iostream>
#include <string>
#include <vector>
const int N = 3;
const int M = 2;
const int Q = 5;
typedef std::vector<double> dim1;
typedef std::vector<dim1> array2D;
typedef std::vector<array2D> array3D;
array2D A(N, dim1(M));
array2D B(N, dim1(M));
array3D C(N, array2D(M, dim1(Q)));
int main() {
    for (int ix = 0; ix < N; ++ix) {
        for (int iy = 0; iy < M; ++iy) {
            for (int iq = 0; iq < Q; ++iq) {
                C[ix][iy][iq] = 1.0;
            }
        }
    }
    for (int ix = 0; ix < N; ++ix) {
        for (int iy = 0; iy < M; ++iy) {
            for (int iq = 0; iq < Q; ++iq) {
                std::cout << C[ix][iy][iq];
            }
            std::cout << std::endl;
        }
        std::cout << std::endl;
    }
return 0;
}

您几乎可以工作了。我看到的代码中唯一缺少的是一行中数字之间的空格。

std::cout << C[ix][iy][iq] << " ";
                           ^^^^^^

这将在行的最后一个数字之后添加一个空格。如果这是不可接受的,你将需要一点额外的逻辑:

for (int iq = 0; iq < Q; ++iq) {
    std::cout << C[ix][iy][iq];
    if ( iq < Q-1 ) {
       std::cout << " ";
    }
}