结构体 faiss::HeapArray
-
template<typename C>
struct HeapArray 用于一组 [最小|最大] 堆的模板结构体。它经过专门设计,使堆的实际数据可以直接存储在紧凑的数组中。
公共函数
-
inline T *get_val(size_t key)
返回堆的值的列表。
-
inline TI *get_ids(size_t key)
相应的标识符。
-
void heapify()
在添加之前准备所有的堆
-
void addn(size_t nj, const T *vin, TI j0 = 0, size_t i0 = 0, int64_t ni = -1)
将 nj 个元素添加到堆 i0:i0+ni,使用顺序 ID
- 参数:
nj – 要添加到每个堆的元素数量
vin – 要添加的元素,大小为 ni * nj
j0 – 将此添加到要添加的 ID
i0 – 要更新的第一个堆
ni – 要更新的元素数量 (-1 = 使用 nh)
-
void addn_with_ids(size_t nj, const T *vin, const TI *id_in = nullptr, int64_t id_stride = 0, size_t i0 = 0, int64_t ni = -1)
与 addn 相同
- 参数:
id_in – 要添加的元素的 ID,大小为 ni * nj
id_stride – id_in 的步幅
-
void addn_query_subset_with_ids(size_t nsubset, const TI *subset, size_t nj, const T *vin, const TI *id_in = nullptr, int64_t id_stride = 0)
与 addn_with_ids 相同,但仅适用于查询的子集
- 参数:
nsubset – 要更新的查询条目的数量
subset – 要更新的查询的索引,范围为 0..nh-1,大小为 nsubset
-
void reorder()
重新排序所有堆
-
inline T *get_val(size_t key)