簡體   English   中英

通過跨度有什么區別 <T> 和std :: array作為參數?

[英]What's the difference between passing span<T> and std::array as arguments?

在他的C ++核心指南中 ,Bjarne Stroustrup建議在通過引用傳遞數組時使用span。 為什么不直接傳遞一個std :: array對象?

  1. 按值傳遞std::array復制它們。 gsl::span是帶它們的函數引用現有的數據數組。

  2. gsl::span能夠獲取運行時定義的大小數組。 std::array在編譯時是固定的。

  3. gsl::span不關心擁有數組的類型; 它只是一個指針+大小。 因此,基於span的接口可以從std::vectorQVector和許多其他類型提供數據。 基於std::array的接口要求您使用該特定容器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM