理解C 語言中的「span」
「span」型別是一種輕量級抽象,表示記憶體中連續的值序列。它可以被視為原始指標和容器之間的交叉,但沒有後者的開銷或所有權語義。
何時使用 span
考慮使用當分配的長度或大小很重要時,跨越原始指針。例如,您可以使用:
void read_into(int* buffer, size_t buffer_size);
這樣的函數,而不是:
void read_into(span<int> buffer);
如果您有適合您需求的現有容器,請不要使用 span。 Spans 無意取代標準庫容器。
使用 span 的好處
此外,跨度有利於程式碼可讀性和靜態分析,有助於識別潛在的記憶體錯誤。
可用性
C 20: Span 被正式採用為 C 20 標準庫中的 std::span。
C 17 或早期:
如果您使用的是C 17 或更早版本,您可以透過第三方函式庫(例如Microsoft 的GSL 或GS L-Lite)訪問span,它們提供基於核心指南的支援庫(GSL)的實現).
進一步資源:
以上是什麼時候應該在 C 中使用 `std::span` ?的詳細內容。更多資訊請關注PHP中文網其他相關文章!