如何在C++中自定义prev函数

avatar
作者
筋斗云
阅读量:0

在C++中,你可以通过编写一个模板函数来实现自定义的prev函数

#include<iostream> #include<vector> #include<iterator>  template<typename BidirectionalIterator> BidirectionalIterator my_prev(BidirectionalIterator it, int n = 1) {     std::advance(it, -n);     return it; }  int main() {     std::vector<int> vec = {1, 2, 3, 4, 5};     auto it = vec.begin() + 2; // 指向第三个元素,即值为3的元素      std::cout << "Current element: " << *it<< std::endl;      auto prev_it = my_prev(it);     std::cout << "Previous element: " << *prev_it<< std::endl;      auto prev_prev_it = my_prev(it, 2);     std::cout << "Two steps back: " << *prev_prev_it<< std::endl;      return 0; } 

在这个示例中,我们创建了一个名为my_prev的模板函数,它接受一个双向迭代器(如std::vectorstd::list的迭代器)和一个可选的整数参数n,表示要向后移动的步数。默认情况下,n为1,表示只返回前一个元素。

然后,我们使用std::advance函数将迭代器向后移动n个位置。请注意,由于我们使用了负数作为std::advance的参数,所以迭代器实际上是向前移动的。最后,函数返回更新后的迭代器。

main函数中,我们创建了一个包含5个整数的std::vector,并使用my_prev函数获取当前元素的前一个元素和两个元素之前的元素。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!