語言

VBuffer<T> 結構

定義

一個同時支援密集與稀疏表示的緩衝區。 這是所有 VectorDataViewType 實例的表示類型。 此向量的明確定義值會被暴露於 GetValues() ,若非稠密,則 GetIndices()。

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>。

建構函式

名稱 Description
VBuffer<T>(Int32, Int32, T[], Int32[])

構造一個可能稀疏的向量表示。

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

構建一個稠密表示。 indices陣列通常未被指定,但若有指定,應視為可保留、可能使用的緩衝區。

欄位

名稱 Description
Length

緩衝區的邏輯長度。

屬性

名稱 Description
IsDense

會取得一個值,表示緩衝區中是否明確表示每個邏輯元素。

方法

名稱 Description
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 包含與 Length 排他之間,對應所有明確定義的值。 所有未指定索引的值都應視為隱含定義,預設值為 T。

GetItemOrDefault(Int32, T)

物品會被存放在這個結構裡。 對於密集向量,這是個簡單的查找。 對於稀疏向量,它會嘗試找到該索引的條目,並設 destination 為該儲存值,若未找到該值,則將其指派為預設值。

GetItemOrDefault(Int32)

它的變體 GetItemOrDefault(Int32, T) 是回傳該值,而不是用參考參數回傳。

GetValues()

明確代表的價值觀。 當 IsDense時, Length 回傳值的 將等於 Length,否則長度將小於 Length。

Items(Boolean)

回傳所有索引/值對的聯合清單。

ToString()

一個同時支援密集與稀疏表示的緩衝區。 這是所有 VectorDataViewType 實例的表示類型。 此向量的明確定義值會被暴露於 GetValues() ,若非稠密,則 GetIndices()。

適用於