namespace std {
template <class ForwardIterator>
ForwardIterator next(ForwardIterator x,
typename std::iterator_traits<ForwardIterator>::difference_type n = 1); // C++11
template <class InputIterator>
constexpr InputIterator next(InputIterator x,
typename std::iterator_traits<InputIterator>::difference_type n = 1); // C++17
}
概要
n
回前方に進めたイテレータを返す。
advance()
と違い、引数として渡されたイテレータへの参照を書き換えるのではなく、n
回進んだイテレータのコピーを返す。
効果
advance(x, n);
return x;
戻り値
引数として渡されたイテレータをn
回前方に進めたイテレータのコピー
例
#include <iostream>
#include <iterator>
#include <vector>
int main()
{
std::vector<int> v = {3, 1, 4, 5, 2};
{
decltype(v)::iterator it = std::next(v.begin()); // イテレータを1回進める
std::cout << *it << std::endl;
}
{
decltype(v)::iterator it = std::next(v.begin(), 2); // イテレータを2回進める
std::cout << *it << std::endl;
}
}
xxxxxxxxxx
#include <iostream>
#include <iterator>
#include <vector>
int main()
{
std::vector<int> v = {3, 1, 4, 5, 2};
{
decltype(v)::iterator it = std::next(v.begin()); // イテレータを1回進める
std::cout << *it << std::endl;
}
{
decltype(v)::iterator it = std::next(v.begin(), 2); // イテレータを2回進める
std::cout << *it << std::endl;
}
}
出力
1
4
バージョン
言語
- C++11
処理系
- Clang: 3.0 ✅
- GCC: 4.4.0 ✅
- ICC: ??
- Visual C++: ??
関連項目
名前 | 説明 |
---|---|
prev() |
n 回後方に進めたイテレータを返す |
advance() |
n 回イテレータを進める |