簡體   English   中英

限制`reverse_iterator`的原因

[英]Reason for restrictions of `reverse_iterator`

reverse_iterator的cppreference頁面上,我找到了以下注釋

std::reverse_iterator不能與返回對成員對象的引用的迭代器一起使用(所謂的“存儲迭代器”)。 存儲迭代器的一個例子是std::filesystem::path::iterator

這個說法是否正確? 如果是的話,為什么呢?

對我來說,限制是沒有意義的,因為我認為反向迭代器基本上交換了operator ++operator -- (並將底層迭代器存儲為1)。

編輯:顯然這個問題可能被誤解:我理解我們需要一次遞減操作來實現反向迭代器。 問題是為什么在構造reverse_iterator期間沒有實現這一點。 然后避免使用存儲迭代器的問題。 但顯然這不是它的完成方式,並且每次解除引用迭代器時都會執行減量。 為什么?

並將底層迭代器關閉一個

這就是原因。 你必須在解除引用時召喚一個不是一個一個迭代器,並且如果對變形迭代器的破壞使從它獲得的引用無效(如在存儲迭代器的情況下),那么鼻子惡魔。

暫無
暫無

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

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