目前,std::advance
是這樣設計的:爲什麼不std :: advance返回結果迭代器?
template< class InputIt, class Distance >
void advance(InputIt& it, Distance n);
不過,我經常發現自己想要的東西,如:
template< class InputIt, class Distance >
InputIt advance(InputIt it, Distance n);
那麼,什麼是當前的設計背後的原理是什麼?這是出於某種性能考慮?請注意,std::next
和std::prev
確實會返回結果迭代器。
我相信這個設計需要支持輸入迭代器。 'std :: next'和'std :: prev'需要相應的前向和雙向迭代器。 –
我相信他們沒有想到像這樣設計它......就像很多其他的東西一樣。 – Nawaz
IDK。但是,在其他地方,我們做了一些努力來避免迭代器的多餘副本,例如post和pre increment。所以顯然有人認爲這是一個性能問題,正如你所建議的那樣。 –