【问题标题】:printing multidimensional vector in rows , cols and depth order按行、列和深度顺序打印多维向量
【发布时间】:2015-11-09 04:42:43
【问题描述】:

我正在尝试按行 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(rows) x 5(cols) x 3,我觉得它看起来不对。

这是我的代码...

#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;

}

【问题讨论】:

    标签: c++ multidimensional-array vector printing


    【解决方案1】:

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

    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 << " ";
        }
    }
    

    【讨论】:

    • 我添加了std::endl..它不会和空格一样工作吗?
    • @TheCoder std::endl 会给你一个换行符。
    • 我想写一个函数来传递 Vectors A & B 并返回一个一维向量。我不知道怎么写。任何帮助表示赞赏。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多