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> 的所有代码都假定赋值足以使值完全独立副本。 因此,例如,这意味着缓冲区的缓冲区是不可能的。 但是,类似 Int32的事情, Single和 ReadOnlyMemory<T>,是完全好的。
- 继承
-
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>, Int32, T) |
从此缓冲区复制到给定的目标范围,从指定的索引开始。 这“假装”。 |
| CopyTo(Span<T>) |
从此缓冲区复制到给定的目标范围。 这“假装”。 |
| CopyTo(VBuffer<T>, Int32, Int32) |
将此缓冲区中的值范围复制到给定的目标。 |
| CopyTo(VBuffer<T>) |
从此缓冲区复制到给定的目标。 |
| CopyToDense(VBuffer<T>) |
从此缓冲区复制到给定的目标,强制密集表示形式。 |
| DenseValues() |
返回一个可枚举的 Length 项,表示值。 |
| GetEnumerator() |
返回一个枚举器,该枚举器循环访问 VBuffer 中的值。 |
| GetIndices() |
索引。 对于密集表示形式,不使用此数组,并返回默认的“空”范围。
对于稀疏表示形式,它与从 GetValues() 中返回并指定相应值的逻辑索引并行,以递增顺序,介于 0(含 0 和 Length 独占)之间,对应于所有显式定义的值。 所有未指定索引的值都应被视为使用默认值 |
| GetItemOrDefault(Int32, T) |
获取存储在此结构中的项。 对于密集矢量,这是一个简单的查找。
对于稀疏向量,它将尝试查找具有该索引的条目,并设置为 |
| GetItemOrDefault(Int32) |
该变量 GetItemOrDefault(Int32, T) 返回值,而不是使用引用参数将其传递回。 |
| GetValues() | |
| Items(Boolean) |
返回所有索引/值对的联合列表。 |
| ToString() |
支持密集和稀疏表示形式的缓冲区。 这是所有 VectorDataViewType 实例的表示类型。 此矢量的显式定义值通过公开,如果不密集,GetIndices()则公开GetValues()。 |