VBuffer<T> 結構
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
一個同時支援密集與稀疏表示的緩衝區。 這是所有 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[]) |
構建一個稠密表示。
|
欄位
| 名稱 | 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 排他之間,對應所有明確定義的值。 所有未指定索引的值都應視為隱含定義,預設值為 |
| GetItemOrDefault(Int32, T) |
物品會被存放在這個結構裡。 對於密集向量,這是個簡單的查找。
對於稀疏向量,它會嘗試找到該索引的條目,並設 |
| GetItemOrDefault(Int32) |
它的變體 GetItemOrDefault(Int32, T) 是回傳該值,而不是用參考參數回傳。 |
| GetValues() |
明確代表的價值觀。 當 IsDense時, Length 回傳值的 將等於 Length,否則長度將小於 Length。 |
| Items(Boolean) |
回傳所有索引/值對的聯合清單。 |
| ToString() |
一個同時支援密集與稀疏表示的緩衝區。 這是所有 VectorDataViewType 實例的表示類型。 此向量的明確定義值會被暴露於 GetValues() ,若非稠密,則 GetIndices()。 |