函式模板
<iterator>

std::prev

template <class BidirectionalIterator>  BidirectionalIterator prev (BidirectionalIterator it,       typename iterator_traits<BidirectionalIterator>::difference_type n = 1);
獲取前一個元素的迭代器
返回一個迭代器,該迭代器指向將 it 推進 -n 個位置後所指向的元素。

如果 it 是一個隨機訪問迭代器,則函式只使用一次 operator+operator-。否則,函式將重複使用複製的迭代器的遞增或遞減運算子(operator++operator--),直到推進 n 個元素為止。

引數

it
迭代器的基準位置。
BidirectionalIterator 應至少是雙向迭代器
n
元素位置的偏移量(預設為 1)。
difference_type 是表示 BidirectionalIterator 型別迭代器之間距離的數值型別。

返回值

指向 itn 個位置的元素的迭代器。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// prev example
#include <iostream>     // std::cout
#include <iterator>     // std::next
#include <list>         // std::list
#include <algorithm>    // std::for_each

int main () {
  std::list<int> mylist;
  for (int i=0; i<10; i++) mylist.push_back (i*10);

  std::cout << "The last element is " << *std::prev(mylist.end()) << '\n';

  return 0;
}

輸出

The last element is 90


複雜度

隨機訪問迭代器 的常量。
對於雙向迭代器,線性複雜度與 n 相關。

迭代器有效性

無效果。

資料競爭

該函式會訪問迭代器,但它永遠不會被解引用(呼叫不會訪問指向的物件)。

異常安全

如果對複製的迭代器執行的任何算術運算丟擲異常,則會丟擲異常,並提供與這些運算相同的保證級別。

另見