Assemblyscript: Zweidimensionales Array austauschen?

Erstellt am 23. Okt. 2019  ·  3Kommentare  ·  Quelle: AssemblyScript/assemblyscript

Ich habe eine Klasse, die ein 2D-Array von i32-Werten aufnimmt. Hier ist mein Code:

export class Kernel {

    public size: i32;
    public margin: i32;

    public multipliers: Array<Array<i32>>;
    public products: Array<Array<i32>>;

    constructor(multipliers: Array<Array<i32>>) {
    ...
    }

    public getAverage(): i32 {
    ...
    }

    public iterate(grid: Array<Array<i32>>): Array<Array<i32>> {
    ...
    }
}

So versuche ich es zu instanziieren:

const kernelMultipliers = [
    [1, 1, 1],
    [1, 1, 1],
    [1, 1, 1]
];

let ptr = module.__retain(module.__allocArray(module.INT32ARRAY, kernelMultipliers));
let kernel = new module.exports.Kernel(ptr);

Gibt es eine Möglichkeit, ein 2D-Array von Werten zuzuweisen? Wenn nicht, gibt es eine elegante Möglichkeit, jedes 1d-Array zuzuweisen und ein Array von Array<i32> Zeigern an den Klassenkonstruktor zu übergeben?

Bearbeiten: Ich denke, ich könnte das 2D-Array abflachen und dann die Breite übergeben, aber ich hoffe, dass es eine bessere Lösung gibt.

question stale

Hilfreichster Kommentar

Aber wenn Sie echte Leistung benötigen, ist es immer viel besser, 2D-Arrays zu reduzieren

Alle 3 Kommentare

Versuchen Sie, zuerst die inneren Arrays von Ganzzahlen zuzuweisen und dann das äußere Array von Arrays von Ganzzahlen zuzuweisen, beispielsweise mit diesen IDs:

export const INNER_ID = idof<i32[]>();
export const OUTER_ID = idof<i32[][]>();
let ptr = module.__retain(
  module.__allocArray(module.OUTER_ID,
    kernelMultipliers.map(row => module.__allocArray(module.INNER_ID, row))
  )
);
let kernel = new module.Kernel(ptr);
module.__release(ptr); // unless you still need it externally

Aber wenn Sie echte Leistung benötigen, ist es immer viel besser, 2D-Arrays zu reduzieren

Dieses Problem wurde automatisch als veraltet markiert, da es in letzter Zeit keine Aktivität hatte. Es wird geschlossen, wenn keine weitere Aktivität stattfindet. Vielen Dank für Ihre Beiträge.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

torch2424 picture torch2424  ·  3Kommentare

jerrywdlee picture jerrywdlee  ·  4Kommentare

evgenykuzyakov picture evgenykuzyakov  ·  3Kommentare

DanielMazurkiewicz picture DanielMazurkiewicz  ·  4Kommentare

MaxGraey picture MaxGraey  ·  3Kommentare