I wouldn't state it is the best way but you can try something like that:
```D
import std.complex;
import std.range : zip;
import std.algorithm : equal, map;
import std.array : array;

void main(){
    auto N=2;

    double[] x,y;
    x.length = N;
    y.length = N;

    x[0] = 1.1;
    x[1] = 2.2;
    y[0] = 3.3;
    y[1] = 4.4;

    auto z = zip(x, y)                      // concatenate two ranges
.map!(a=>Complex!double(a[0],a[1])) // take the current first element of the first range as the real part and the current first element of the second range as the imaginary part .array; // convert the lazy range to a dynamic array, probably you can avoid but this depends on how you use it later

        assert(z.equal([
        Complex!double(1.1, 3.3),
        Complex!double(2.2, 4.4),
    ]));
}
```D

Reply via email to