我正在尝试以行x cols 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(行)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;
}
答案 0 :(得分: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 << " ";
}
}