📅  最后修改于: 2023-12-03 15:13:58.552000             🧑  作者: Mango
在 C++ STL 中,我们可以通过 std::next
和 std::advance
函数来实现对迭代器的操作。这两个函数的主要作用是在迭代器中进行前进和后退。
std::next
函数接受两个参数:一个迭代器和一个整数 n
。当 n
为正数时,std::next
会返回迭代器向前移动 n
个位置后的结果;当 n
为负数时,std::next
会返回迭代器向后移动 -n
个位置后的结果。
下面是一个示例代码:
#include <iostream>
#include <vector>
#include <iterator>
int main() {
std::vector<int> v{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
auto it = std::next(v.begin(), 5);
std::cout << *it << '\n';
}
在上面的代码中,我们使用 std::next
函数将 v.begin()
迭代器向前移动 5
个位置,并将结果迭代器 it
指向第 5
个元素,即5
。
std::advance
函数与 std::next
函数类似,也接受两个参数:一个迭代器和一个整数 n
,但它没有返回值,而是将迭代器向前或向后移动 n
个位置。
下面是一个示例代码:
#include <iostream>
#include <vector>
#include <iterator>
int main() {
std::vector<int> v{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
auto it = v.begin();
std::advance(it, 5);
std::cout << *it << '\n';
}
在上面的代码中,我们使用 std::advance
函数将 v.begin()
迭代器向前移动 5
个位置,并将结果迭代器 it
指向第 5
个元素,即5
。
std::next
函数和 std::advance
函数都能实现对迭代器的操作,但它们的实现方式不同。std::next
函数是通过计算迭代器与整数之间的距离来实现的,而 std::advance
函数则是通过修改迭代器本身来实现的。一般来说,如果我们只需要访问迭代器所指向的元素,那么可以使用 std::next
函数;如果我们需要在迭代器中进行修改,那么需要使用 std::advance
函数。