C++ STL begin()和front()、end()和back()的区别与用法
begin()函数和end()位于iteartor;
而front()和back()位于vector list deque and etc…
- begin()函数
函数原型:
iterator begin();
const_iterator begin();
功能:
返回一个当前vector容器中起始元素的迭代器。
- end()函数
函数原型:
iterator end();
const_iterator end();
功能:
返回一个当前vector容器中末尾元素的迭代器。
front()函数
函数原型:
reference front();
const_reference front();
功能:
返回当前vector容器中起始元素的引用。back()函数
函数原型:
reference back();
const_reference back();
功能:
返回当前vector容器中末尾元素的引用。
#include <iostream>
#include <vector>
using namespace std;
int main()
{ vector<char> v1; vector<char>::iterator iter1; vector<char>::iterator iter2; v1.push_back('a'); v1.push_back('b'); v1.push_back('c'); v1.push_back('d'); cout << "v1.front() = " << v1.front() << endl; cout << "v1.back() = " << v1.back() << endl; iter1 = v1.begin(); cout << *iter1 << endl; iter2 = v1.end()-1; //v1.end()指向的是最后一个元素的下一个位置,所以访问最后一个元素,所以:iter2 = v1.end() - 1 是使iter2指向最后一个元素 cout << *iter2 << endl; return 0;
}
输出结果为:
v1.front() = a
v1.back() = d
a
d--------------------------------
Process exited after 0.7854 seconds with return value 0
请按任意键继续. . .
STL中的begin和end定义的是一个半开放区间“[begin, end)”,end是最后一个元素的后一个位置。这样做有两个好处:
1,判断是否到尾部简单只要!=end就行了,<运算在STL中是要避免的,因为计算量可能会比较大。
2,判断空区间很简单begin()==end()要取最后一个元素的话用last()方法。
作者:liuwxye
来源:CSDN
原文:https://blog.csdn.net/qq_30366449/article/details/77126788
版权声明:本文为博主原创文章,转载请附上博文链接!
C++ STL begin()和front()、end()和back()的区别与用法相关推荐
- C++ STL begin()和end()函数(深入了解,一文学会)
C++ STL标准库提供的所有容器做了系统的讲解.无论是序列式容器还是关联式容器(包括哈希容器),不仅模板类内部提供有 begin() 和 end() 成员方法,C++ STL 标准库中还提供有同名且 ...
- STL核心知识总结(1)常用容器的用法
目 录 string vector deque stack queue list set/ multiset map/ multimap Tips: 在使用容器时,注意要添加相应的头文件,如#incl ...
- SQL事务用法begin tran,commit tran和rollback tran的用法
Sql Server 2005/2008中提供了begin tran,commit tran和rollback tran来使用事务.begin tran表示开始事务, commit tran表示提交事 ...
- [转载] C++ STL之 vector的capacity和size属性区别
参考链接: C++ Vector中capacity与size vector中这两个属性很容易弄混淆. size是当前vector容器真实占用的大小,也就是容器当前拥有多少个容器. capacity是指 ...
- 关于C++ STL 中advance()、 distance() 、begin()、end()、prev()、next() 函数的使用
1.advance():用于将迭代器前进(或者后退)指定长度的距离 #include <iostream> // std::cout #include <iterator> / ...
- (C++ STL)list的实现
#include <iostream> using namespace std; //採用迭代器和空间配置器所实现的双向链表的基本功能 template<class _Ty,clas ...
- STL中map和string, vector 用法详解
1. map 用法详解 std map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成 ...
- c++ 将deque部分元素赋值给vector_《STL源码剖析》学习笔记——序列式容器vector
目录 1.容器的概观与分类 2.vector概述 2.1 vector 的迭代器 2.2 vector数据结构 2.3 vector构造与内存管理 2.4 vector的元素操作 1.容器的概观与分类 ...
- STL工具书(常用用法总结)
STL工具书(常用用法总结) 此博客可用于常用STL用法的快速查询与使用, 对于原理方面可以查阅相关文档. 目录 STL工具书(常用用法总结) 1. 容器 1.1 序列式容器 1. 数组(array) ...
最新文章
- cpu,内存,虚拟内存,硬盘,缓存之间是什么关系??
- rancher使用fluentd-pilot收集日志分享
- android调用c闪退未看到log,解决:Android开发 看不到崩溃的日志
- 0227互联网新闻 | 腾讯与英特尔联合推出云游戏平台“腾讯即玩”;华为企业业务MWC现场发布数字平台...
- SAP UI5 的 sap-ui-bootstrap script 脚本标签各属性解析
- win10 linux uefi启动不了系统安装教程,【从踩坑到教程】win10下ubuntu18.04双系统UEFI模式安装、Nvidia驱动安装...
- TypeScript泛型接口
- 数据库的字段属性(重点)
- 【ArcGIS|空间分析|网络分析】11 利用流量数据执行网络分析
- 安装Adobe Reader 时报错:HRESULT:0x80070422
- 三维医学图像数据标注 3D Slicer
- python软件工程师认证证书报考条件_软件工程师怎么考 报考条件是什么
- “拖延症”的良方-对于追求完美,自制力差,情绪化的人很受用
- 安卓ROOT工具汇总
- 计算机网络实验-网络嗅探器
- centos6查看运行服务器,centos如何查看端口是否开放_网站服务器运行维护,centos,端口...
- 做一个jQuery插件---带“旋转木马”效果的轮播图
- linux cp命令复制整个文件夹
- php 如何将image图片转化为字符串
- 【raspberrypi】树莓派官方7寸屏入门指南
热门文章
- 小姐姐在家也能采矿,颠覆了我的认知
- Django合并清理migrations文件
- 如何做竞品分析报告?
- 2022年智能无人系统与人工智能国际会议(SIUSAI 2022)
- Cannot determine value type from string ‘xxx‘
- 第六章第十题(使用isPrime方法)(Use the isPrime Method)
- 2021-2027全球与中国螺旋齿轮减速器市场现状及未来发展趋势
- 315 曝光充电桩黑幕,还能不能好好充个电了?
- 配置maven从自己的私服下载jar包nexus、maven私服仓库(二)
- 声发射传感器的选择经验