3
我正在創建一個型號爲InputIterator
的類型。在我的應用程序中,「跳過第一十萬個元素」是一件合理的事情,創建value_type
代價昂貴,所以我希望我的迭代器只在解除引用時創建value_type
,而不是在遞增時創建。製作一個不存儲value_type的InputIterator
我很容易讓operator*
按值返回value_type
。但我不知道該怎麼辦operator->
。如果我的迭代器不存儲value_type
,如何返回指針?我害怕終身遇到指向臨時的問題,不想被燒燬。
我想過沒有提供operator->
,但後來我沒有一個完整的InputIterator
。
爲什麼不在你的迭代器中存儲一個指向value_type的指針並且只在需要時才分配它?我的意思是像「懶加載」模式。 – MRB
您仍然可以存儲'value_type'的對象,但只能在第一次解除引用之後創建它。用類似['std :: optional'](http://en.cppreference.com/w/cpp/experimental/optional)的東西。 – BoBTFish
我在C++ 14中,所以我沒有'std :: optional'。但即使我做了,value_type也很大,並且也會使迭代器變大。 –