VBuffer<T> 结构

定义

支持密集和稀疏表示形式的缓冲区。 这是所有 VectorDataViewType 实例的表示类型。 此向量的显式定义值通过 公开,如果不是密集,GetIndices()则通过 GetValues() 公开。

public readonly struct VBuffer<T> : System.Collections.IEnumerable
public readonly struct VBuffer<T>
type VBuffer<'T> = struct
    interface IEnumerable
type VBuffer<'T> = struct
Public Structure VBuffer(Of T)
Implements IEnumerable
Public Structure VBuffer(Of T)

类型参数

T

向量的类型。 对于它可能是什么没有编译时限制,但此代码以及几乎所有使用 VBuffer<T> 的代码都假定值赋值足以生成其完全独立的副本。 例如,这意味着不可能有缓冲区。 但是,诸如 、 SingleReadOnlyMemory<T>之类的Int32内容是完全正常的。

继承
VBuffer<T>
实现

注解

此结构本身是不可变的,但要启用缓冲区编辑(包括重用内部缓冲区),可以通过 访问VBuffer<T>可变变量VBufferEditor<T>

在整个代码中,我们假设稀疏VBuffer<T>在逻辑上等效于具有用于T填充默认值的默认值的密集 VBuffer<T>

构造函数

VBuffer<T>(Int32, Int32, T[], Int32[])

构造可能稀疏的向量表示形式。

VBuffer<T>(Int32, T[], Int32[])

构造密集表示形式。 数组 indices 通常未指定,但如果指定,则应将其视为要保留到的缓冲区,以便可能使用。

字段

Length

缓冲区的逻辑长度。

属性

IsDense

获取一个值,该值指示是否在缓冲区中显式表示每个逻辑元素。

方法

Copy(T[], Int32, VBuffer<T>, Int32)

从源数组的某个部分复制到给定目标。

CopyTo(Span<T>)

从此缓冲区复制到给定的目标范围。 这“致密”。

CopyTo(Span<T>, Int32, T)

从指定索引处开始,从此缓冲区复制到给定的目标范围。 这“致密”。

CopyTo(VBuffer<T>)

从此缓冲区复制到给定目标。

CopyTo(VBuffer<T>, Int32, Int32)

将一系列值从此缓冲区复制到给定目标。

CopyToDense(VBuffer<T>)

从此缓冲区复制到给定目标,强制使用密集表示形式。

DenseValues()

返回一个可枚举的 ,其中包含 Length 表示值的项。

GetEnumerator()

返回一个循环访问 VBuffer 中的值的枚举器。

GetIndices()

索引。 对于密集表示形式,不使用此数组,并将返回默认的“空”范围。 对于稀疏表示形式,它与从 GetValues() 返回的 并行,并指定相应值的逻辑索引,按递增顺序,介于 0(含和 Length 独占)之间,对应于所有显式定义的值。 应将未指定索引处的所有值视为使用默认值 T隐式定义。

GetItemOrDefault(Int32)

GetItemOrDefault(Int32, T) 一个变体,它返回值,而不是使用引用参数传回该值。

GetItemOrDefault(Int32, T)

获取存储在此 结构中的项。 对于密集矢量,这是一个简单的查找。 对于稀疏向量,它将尝试查找具有该索引的条目,并将 设置为 destination 该存储值,或者如果未找到此类值,请为其分配默认值。

GetValues()

显式表示的值。 当此 IsDense时, Length 返回值的 将等于 Length,否则的长度将小于 Length

Items(Boolean)

返回所有索引/值对的联合列表。

ToString()

支持密集和稀疏表示形式的缓冲区。 这是所有 VectorDataViewType 实例的表示类型。 此向量的显式定义值通过 公开,如果不是密集,GetIndices()则通过 GetValues() 公开。

适用于