TypedArrayOf

类型化数组(TypedArrayOf)

Napi::TypedArrayOf<T> 类继承自 Napi::TypedArray 类。

Napi::TypedArrayOf 类对应 JavaScript 中的各类 TypedArray 类。

类型定义(Typedefs)

常用的 JavaScript 类型化数组类型已预先定义,可直接使用:

cpp 复制代码
using Int8Array = Napi::TypedArrayOf<int8_t>;
using Uint8Array = Napi::TypedArrayOf<uint8_t>;
using Int16Array = Napi::TypedArrayOf<int16_t>;
using Uint16Array = Napi::TypedArrayOf<uint16_t>;
using Int32Array = Napi::TypedArrayOf<int32_t>;
using Uint32Array = Napi::TypedArrayOf<uint32_t>;
using Float32Array = Napi::TypedArrayOf<float>;
using Float64Array = Napi::TypedArrayOf<double>;

唯一的例外是 Uint8ClampedArray,它需要显式初始化:

cpp 复制代码
Uint8Array::New(env, length, napi_uint8_clamped_array)

注意:尽管可以创建 "受限(clamped)" 数组,但这种受限行为仅在 JavaScript 层面生效。

方法(Methods)

New(分配新实例)

分配一个指定元素长度的新 Napi::TypedArray 实例。底层的 Napi::ArrayBuffer 会自动分配足够的空间以容纳指定数量的元素。

数组类型参数通常可省略(因为会从模板参数 T 推导),仅在创建 "受限(clamped)" 数组时需要显式指定。

cpp 复制代码
static Napi::TypedArrayOf Napi::TypedArrayOf::New(napi_env env,
                        size_t elementLength,
                        napi_typedarray_type type);
  • [in] env:用于创建 Napi::TypedArrayOf 实例的运行环境。
  • [in] elementLength:要分配的数组长度(单位:元素)。
  • [in] type:要分配的数组类型(可选)。

返回新的 Napi::TypedArrayOf 实例。

New(包装现有 ArrayBuffer)

将传入的 Napi::ArrayBuffer 包装为一个新的 Napi::TypedArray 实例。

数组类型参数通常可省略(因为会从模板参数 T 推导),仅在创建 "受限(clamped)" 数组时需要显式指定。

cpp 复制代码
static Napi::TypedArrayOf Napi::TypedArrayOf::New(napi_env env,
                        size_t elementLength,
                        Napi::ArrayBuffer arrayBuffer,
                        size_t bufferOffset,
                        napi_typedarray_type type);
  • [in] env:用于创建 Napi::TypedArrayOf 实例的运行环境。
  • [in] elementLength:数组的长度(单位:元素)。
  • [in] arrayBuffer:作为底层存储的 Napi::ArrayBuffer 实例。
  • [in] bufferOffset:该数组在底层 Napi::ArrayBuffer 中的起始偏移量(单位:字节)。
  • [in] type:要分配的数组类型(可选)。

返回新的 Napi::TypedArrayOf 实例。

构造函数(Constructor)

空构造函数

初始化一个空的 Napi::TypedArrayOf 类实例。

cpp 复制代码
Napi::TypedArrayOf::TypedArrayOf();
包装现有对象的构造函数

初始化一个用于包装现有 Napi::TypedArrayOf 对象的包装器实例。

cpp 复制代码
Napi::TypedArrayOf::TypedArrayOf(napi_env env, napi_value value);
  • [in] env:用于创建 Napi::TypedArrayOf 对象的运行环境。
  • [in] value:要包装的 Napi::TypedArrayOf 引用(底层为 Node-API 原始值)。

operator \[\](非 const 版本)

cpp 复制代码
T& Napi::TypedArrayOf::operator [](size_t index);
  • [in] index:数组中的元素索引。

返回指定索引位置的元素(非 const 引用)。

operator \[\](const 版本)

cpp 复制代码
const T& Napi::TypedArrayOf::operator [](size_t index) const;
  • [in] index:数组中的元素索引。

返回指定索引位置的元素(const 引用)。

Data(非 const 版本)

cpp 复制代码
T* Napi::TypedArrayOf::Data() const;

返回指向底层 Napi::ArrayBuffer 的指针,该指针已偏移至数组的起始位置。

Data(const 版本)

cpp 复制代码
const T* Napi::TypedArrayOf::Data() const

返回指向底层 Napi::ArrayBuffer 的 const 指针,该指针已偏移至数组的起始位置。

相关推荐
Penge6661 小时前
《Go 后端开发者学 TypeScript:keyof关键字》
javascript
Penge6661 小时前
《Go 后端开发者学 TypeScript:extends关键字》
javascript
张张123y1 小时前
DSH 插件调试避坑:client.js 设置面板、热重载与高频报错排查表
开发语言·javascript·人工智能·开源·ecmascript·后端开发·ai agent
wo_jack3 小时前
C++ 入门笔记(十六):第16课 vector 模拟实现十问十答 —— 从三指针到迭代器失效
c++·后端·面试·stl·vector
D e re k ZH3 小时前
C++ 标准库算法全景指南
数据结构·c++·算法
冻柠檬飞冰走茶4 小时前
字母移动游戏题解:贪心求最长可保留连续子串(附 C 实现)
c语言·开发语言·数据结构·算法·动态规划
FRing034 小时前
vue2干货总结7(自定义指令、插槽、单页应用程序、路由的使用(VueRouter))
开发语言·前端·vue.js·vue2
雪落漂泊5 小时前
C++算法 二分查找篇(上)
开发语言·c++·算法
波力海苔夹心脆6756 小时前
C# WPF 资源字典详解:ResourceDictionary、MergedDictionaries 与自定义控件案例
开发语言·c#·wpf·入门教程·resource·资源字典
不会算法的笨小孩6 小时前
异常的使用以及会出现的问题
开发语言·c++·c++11·异常