VBuffer<T> 结构
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
支持密集和稀疏表示形式的缓冲区。 这是所有 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> 的代码都假定值赋值足以生成其完全独立的副本。 例如,这意味着不可能有缓冲区。 但是,诸如 、 Single和 ReadOnlyMemory<T>之类的Int32内容是完全正常的。
- 继承
-
VBuffer<T>
- 实现
注解
此结构本身是不可变的,但要启用缓冲区编辑(包括重用内部缓冲区),可以通过 访问VBuffer<T>可变变量VBufferEditor<T>。
在整个代码中,我们假设稀疏VBuffer<T>在逻辑上等效于具有用于T
填充默认值的默认值的密集 VBuffer<T> 。
构造函数
VBuffer<T>(Int32, Int32, T[], Int32[]) |
构造可能稀疏的向量表示形式。 |
VBuffer<T>(Int32, T[], Int32[]) |
构造密集表示形式。 数组 |
字段
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 独占)之间,对应于所有显式定义的值。 应将未指定索引处的所有值视为使用默认值 |
GetItemOrDefault(Int32) |
的 GetItemOrDefault(Int32, T) 一个变体,它返回值,而不是使用引用参数传回该值。 |
GetItemOrDefault(Int32, T) |
获取存储在此 结构中的项。 对于密集矢量,这是一个简单的查找。
对于稀疏向量,它将尝试查找具有该索引的条目,并将 设置为 |
GetValues() |
显式表示的值。 当此 IsDense时, Length 返回值的 将等于 Length,否则的长度将小于 Length。 |
Items(Boolean) |
返回所有索引/值对的联合列表。 |
ToString() |
支持密集和稀疏表示形式的缓冲区。 这是所有 VectorDataViewType 实例的表示类型。 此向量的显式定义值通过 公开,如果不是密集,GetIndices()则通过 GetValues() 公开。 |