読者です 読者をやめる 読者になる 読者になる

C++0x next/prev

C++

C++0xでは<iterator>にboost::next/priorに相当する
std::nextとstd::prevが追加されるようです。
(std::advanceについて調べてたら見つけました)


std::nextはイテレータをn個進め、std::prevはイテレータをn個戻します。
std::nextとstd::advanceの相違点は、std::advanceがイテレータの参照を受け取って
書き換えるのに対し、std::nextはイテレータのコピーを受け取ってコピーを返す、
というところです。

template <class InputIterator>
  InputIterator next(InputIterator x,
    typename std::iterator_traits<InputIterator>::difference_type n = 1);

template <class BidirectionalIterator>
  BidirectionalIterator prev(BidirectionalIterator x,
    typename std::iterator_traits<BidirectionalIterator>::difference_type n = 1);


C++0x言語拡張まとめ