[英]Is it good practice to return references to iterators? (Does it even make sense)?
我不確定這是否是合法的事情-通過引用返回迭代器:
請注意,我的向量僅包含元素本身 , 而不包含指針 。
在當前狀態下,我已按值將其保留(不帶&)。
關於迭代器是否達成共識,或者我可以同時使用兩種方式嗎?
重點是什么? 迭代器本身就是對向量內部內容的一種引用。 您是否要給某人一個可以在內部修改的迭代器? 也就是說,向迭代器提供引用的類本身會增加它的引用(將其指向向量中的另一事物),並且客戶端以某種方式使其迭代器指向正確的對象,從而導致其之前稱為getElement()? 那是我能想到的唯一引用迭代器的應用程序,對我來說,它肯定也很難聞。
但是更重要的是,迭代器存在嚴重問題,因此可能會持續存在。 迭代器無效。 如果您的介面內部有迭代器,且向量已刪除或增加,您將無法保證客戶的迭代器仍然有效。 然后,客戶端訪問其無效的迭代器,並且發生未定義的行為(即CRASH)。
僅當迭代器被另一個對象“擁有”並且您希望調用者修改所有者的迭代器時,才通過引用返回參數才有意義。 其中有99%的時間是個壞主意。 通常,應將迭代器視為指針,並且除奇數情況外,指針幾乎總是返回/傳遞值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.