Представь у нас
var a = new Float64Array([1, 2, 3]),
b = new Float64Array([4, 5]);
var c = new Float64Array(a.length + b.length);
Теперь я хочу совместить a
а также b
в c
, Я написал привязку C ++ BLAS для копирования данных между двумя массивами двойной / одинарной точности. Дело в том, что эта привязка не имеет offset
атрибут:
void cblas_dcopy(int n, const double *x, const int inc_x, const double *y, const int inc_y);
Могу ли я получить подрешетку, указывающую на смещение c
пространство памяти? В JavaScript вызывается следующее:
// copy first to result, works
cblas_dcopy(3, a, 1, c, 1);
// does not work because slice() returns a copy
cblas_dcopy(2, b, 1, c.slice(a.length), 1);
// now how would I copy to c at offset b.length?
Вы можете сделать это легко без привязки к C ++:
var a = new Float64Array([1, 2, 3]);
var b = new Float64Array([4, 5]);
var c = new Float64Array(a.length + b.length);
c.set(a, 0);
c.set(b, a.length);
Чтобы получить подмассив, как вы просили, попробуйте использовать typedarray.subarray([begin[, end]])
.
Других решений пока нет …