[英]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
的內容:
T
s 的協程的等價物; 閱讀this answer了解詳細信息(注意它是關於ranges-v3中的istream視圖,其中大部分成為標准范圍庫)。std::istream_iterator<T>
包裝在 C++20 視圖界面中”的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.