网站备案去哪找接入商,常州做沙滩旗的公司网站,怎么创建网站挣钱,小公司网站开发advance(it, n) ---------- it 表示某个迭代器#xff0c;n 为整数。该函数的功能是将 it 迭代器前进或后退 n 个位置。distance(first, last) ---------- first 和 last 都是迭代器#xff0c;该函数的功能是计算 first 和 last 之间的距离。begin(cont) …advance(it, n) ---------- it 表示某个迭代器n 为整数。该函数的功能是将 it 迭代器前进或后退 n 个位置。distance(first, last) ---------- first 和 last 都是迭代器该函数的功能是计算 first 和 last 之间的距离。begin(cont) ---------- cont 表示某个容器该函数可以返回一个指向 cont 容器中第一个元素的迭代器。end(cont) ---------- cont 表示某个容器该函数可以返回一个指向 cont 容器中最后一个元素之后位置的迭代器。prev(it) ---------- it 为指定的迭代器该函数默认可以返回一个指向上一个位置处的迭代器。注意it 至少为双向迭代器next(it) ---------- it 为指定的迭代器该函数默认可以返回一个指向下一个位置处的迭代器。注意it 最少为前向迭代器。本节先讲解 advance() 函数其他函数后续章节会做详细介绍。advance() 函数用于将迭代器前进(或者后退)指定长度的距离其语法格式如下template void advance (InputIterator it, Distance n);其中 it 指的是目标迭代器n 通常为一个整数。需要注意的是如果 it 为输入迭代器或者前向迭代器则 n 必须为一个正数即表示将 it 右移(前进) n 个位置反之如果 it 为双向迭代器或者随机访问迭代器则 n 为正数时表示将 it 右移(前进) n 个位置n 为负数时表示将 it 左移(后退) n 个位置。另外根据 it 类型是否为随机访问迭代器advance() 函数底层采用了不同的实现机制1.当 it 为随机访问迭代器时由于该类型迭代器支持 pn 或者 p-n(其中 p 就是一个随机访问迭代器)运算advance() 函数底层采用的就是 itn 操作实现的2.当 it 为其他类型迭代器时它们仅支持进行 或者 -- 运算这种情况下advance() 函数底层是通过重复执行 n 个 或者 -- 操作实现的。值得一提的是advance() 函数定义在头文件并位于 std 命名空间中。因此程序在使用该函数之前应包含如下 2 行代码#include using namespace std;示例:#include // std::cout#include // std::advance#include using namespace std;int main() { //创建一个 forward_list 容器 forward_list mylist{1,2,3,4}; //it为前向迭代器其指向 mylist 容器中第一个元素 forward_list::iterator it mylist.begin(); //借助 advance() 函数将 it 迭代器前进 2 个位置 advance(it, 2); cout *it *it; return 0;}程序执行结果为*it 3此程序中由于 it 为前向迭代器其只能进行 操作即只能前进(右移)所以 advance() 函数的第 2 个参数只能为正数。下面程序以 vector 容器为例演示了 advance() 函数的功能#include // std::cout#include // std::advance#include using namespace std;int main() { //创建一个 vector 容器 vector myvector{1,2,3,4}; //it为随机访问迭代器其指向 myvector 容器中第一个元素 vector::iterator it myvector.begin(); //借助 advance() 函数将 it 迭代器前进 2 个位置 advance(it, 2); cout 1、*it *it endl; //继续使用it其指向 myvector 容器中最后一个元素之后的位置 it myvector.end(); //借助 advance() 函数将 it 迭代器后退 3 个位置 advance(it, -3); cout 2、*it *it; return 0;}程序执行结果为1、*it 32、*it 2注意advance() 函数本身不会检测 it 迭代器移动 n 个位置的可行性如果 it 迭代器的移动位置超出了合理范围it 迭代器的指向将无法保证此时使用 *it 将会导致程序崩溃。