- iterator[meta header]
- std[meta namespace]
- function template[meta id-type]
- cpp11[meta cpp]
namespace std {
template <class BidirectionalIterator>
BidirectionalIterator prev(BidirectionalIterator x,
typename std::iterator_traits<BidirectionalIterator>::difference_type n = 1); // C++11
template <class BidirectionalIterator>
constexpr BidirectionalIterator prev(BidirectionalIterator x,
typename std::iterator_traits<BidirectionalIterator>::difference_type n = 1); // C++17
}
- iterator_traits[link iterator_traits.md]
n
回後方に進めたイテレータを返す。
advance()
と違い、引数として渡されたイテレータへの参照を書き換えるのではなく、n
回後方に進んだイテレータのコピーを返す。
advance(x, -n);
return x;
- advance[link advance.md]
引数として渡されたイテレータをn
回後方に進めたイテレータのコピー
#include <iostream>
#include <iterator>
#include <vector>
int main()
{
std::vector<int> v = {3, 1, 4, 5, 2};
{
decltype(v)::iterator it = std::prev(v.end()); // イテレータを1回逆に進める
std::cout << *it << std::endl;
}
{
decltype(v)::iterator it = std::prev(v.end(), 2); // イテレータを2回逆に進める
std::cout << *it << std::endl;
}
}
- std::prev[color ff0000]
2
5
- C++11
- Clang: 3.0 [mark verified]
- GCC: 4.4 [mark verified]
- ICC: ??
- Visual C++: ??
名前 | 説明 |
---|---|
next() |
n 回前方に進めたイテレータを返す |
advance() |
n 回イテレータを進める |