簡體   English   中英

什么是 istream_view 以及何時使用?

[英]What is an istream_view and when do I use one?

顯然,C++20 有一個新的與std::istream相關的構造: std::istream_view 它上面的cppreference 頁面現在是一個存根 那么,什么是“ istream視圖”,我可以用它做什么?


† - 好的,從技術上講,它重定向到一個關於std::basic_istream_view的頁面,並且那個頁面是一個存根。

std::istream_view<T>是一個范圍 更具體地說,形成為視圖的范圍。 對標准庫的這一添加類似於您在std::ranges::views下可能找到的內容 - 除了它不是任意范圍的視圖,而是std::istream的視圖。

那么什么“查看”應用於std::istream 回想一下istream是一個 stream字符,而不是您選擇的任意T類型元素。 將這些字符解析為連續T的惰性應用是 istream 的“查看”。 也就是說, std::istream_view<T>(is)的第 k 個元素是你第 k 次運行的結果is >> t for t類型T

當您想將與范圍一起使用的代碼直接應用於輸入數據時,您將使用std::istream_view小心) - 而不是首先以更“老派”的方式將輸入解析為某些數據結構,然后將該結構作為一個范圍進行工作。

其他關於std::istream_view的內容:

  • @Barry 已將其描述為從 istream 解析T s 的協程的等價物; 閱讀this answer了解詳細信息(注意它是關於ranges-v3中的istream視圖,其中大部分成為標准范圍庫)。
  • @NicolBolas 認為它是“將std::istream_iterator<T>包裝在 C++20 視圖界面中”的結果。

暫無
暫無

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

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