在 C++ 標準庫中,std::prev
是一個函數模板,用于獲取給定迭代器的前一個迭代器。其原型如下:
template<class BidirectionalIterator>
BidirectionalIterator prev(BidirectionalIterator it,
typename std::iterator_traits<BidirectionalIterator>::difference_type n = 1);
這里,it
是一個雙向迭代器(BidirectionalIterator),n
是一個可選參數,表示要向前移動的距離,默認值為 1。
std::prev
函數返回一個新的迭代器,該迭代器指向 it
之前的第 n
個元素。如果 n
為正數,則返回的迭代器將向前移動;如果 n
為負數,則返回的迭代器將向后移動。
需要注意的是,std::prev
函數不會檢查返回的迭代器是否有效。因此,在使用 std::prev
時,需要確保返回的迭代器在容器的范圍內。否則,使用無效的迭代器可能導致未定義的行為。
以下是一個簡單的示例,展示了如何使用 std::prev
函數:
#include<iostream>
#include<vector>
int main() {
std::vector<int> v = {1, 2, 3, 4, 5};
auto it = v.begin() + 2; // it 指向第三個元素(值為 3)
auto prev_it = std::prev(it); // prev_it 指向第二個元素(值為 2)
std::cout << *prev_it<< std::endl; // 輸出 2
return 0;
}
在這個示例中,我們創建了一個包含 5 個整數的 std::vector
。然后,我們使用 std::prev
函數獲取指向第二個元素的迭代器,并將其打印到控制臺。