Search code examples
c++arraysopenfoam

How does C++ output an array by default?


My job made me work with OpenFOAM (fluid simulation stuff) which is based on C++. I know nothing about C++, not even how to compile a hello world program. In OpenFOAM you can output a three dimensional array as ascii in a text file. This is okay because my calculation doesn't take long. In the file it then has one value per line. Which order do these values have?

So, in Fortran I can do

WRITE(*,*) 3d_array

and it will display the values of the array in the order they were saved, this means the first iteration is in x direction, then in y and then in z direction. The output is in the same order as if I'd output it this way:

integer, allocatable, dimension(x,y,z)::3d_array
[...]

do k=1,z
    do j=1,y
        do i=1,x
            write(*,*) 3d_array(i,j,k)
        end do
    end do
end do

How does it work in C++?


Solution

  • There is no standard functionality to output an array's (or std::vector's, or std::array's) contents in a single call in C++. You have to write the triple loop yourself.

    Hence, just write it in the order you wish, and use the same order if you want to read it back.