C++ STL : advance
来源:互联网 发布:linux u盘启动盘工具 编辑:程序博客网 时间:2024/06/05 06:30
动机
我们在遍历标准库容器的时候习惯用iterator(迭代器)去访问容器里面的元素,常用的习惯用法是:
std::vector<int> vec;vec.push_back(100);vec.push_back(101);vec.push_back(102);vec.push_back(103);vec.push_back(104);std::vector<int>::iterator it;std::cout << *it << std::endl;it+=2;std::cout << *it << std::endl;
上述程序中it+=2
是将迭代器向后移动两个元素。标准库为我们提供了一个标准的模板操作来代替上述表达式,即std::advance(it, 2), advance的英文含义是增加、向前推。顾名思义就是讲迭代器向前推n个位置。
定义
官方关于std::advance的文档:std::advance reference
template<class InputIt, class Distance>void advance(InputIt& it, Distance n);
- it: 迭代器变量
- n 需要增加的向量长度
用法
#include <iostream>#include <iterator>#include <vector>int main() { std::vector<int> v{ 3, 1, 4 }; auto vi = v.begin(); std::advance(vi, 2); std::cout << *vi << '\n';}
程序输出:
4
总结
- std::advance用来对迭代器做偏移操作
- 在使用前要包含
<iterator>
头文件
0 0
- C++ STL : advance
- stl的advance和distance的用法
- STL示例10(advance及distance使用)
- STL(10)之advance组函数源码
- stl 学习笔记13 advance()distance() iter_swap()
- C++ STL 迭代器方法 之 advance与prev 方法 浅析
- STL通用算法: iter_swap,reverse,reverse_copy,advance算法
- 使用stl中的 advance和 distance 方法来进行iterator的加减
- effective stl 第27条:使用distance和advance将容器的const_iterator转换为iterator
- C++ STL一一迭代器相关辅助函数(advance()、distance()、iter_swap())
- C++STL
- C++STL
- C++----STL
- C++,stl
- c++STL
- C++STL
- C++/STL
- [C++]STL
- 石子合并(一)
- (转)GitHub上README写法暨GFM语法解读
- Linux 常用命令 之 http请求命令 curl
- oralce与mysql分别获取当前系统时间
- 数组指针和指针数组的区别
- C++ STL : advance
- CentOS7安装单机版Hadoop2.7.3
- 配置Oracle 11g Active Dataguard
- ubuntu挂载win共享的文件夹
- 一些杂记
- 杭电2010 ( 水仙花数 ) java
- 1368 DNA Consensus String
- ASP.NET基础教程--01
- maven环境快速搭建