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()的区别与用法相关推荐

  1. C++ STL begin()和end()函数(深入了解,一文学会)

    C++ STL标准库提供的所有容器做了系统的讲解.无论是序列式容器还是关联式容器(包括哈希容器),不仅模板类内部提供有 begin() 和 end() 成员方法,C++ STL 标准库中还提供有同名且 ...

  2. STL核心知识总结(1)常用容器的用法

    目 录 string vector deque stack queue list set/ multiset map/ multimap Tips: 在使用容器时,注意要添加相应的头文件,如#incl ...

  3. SQL事务用法begin tran,commit tran和rollback tran的用法

    Sql Server 2005/2008中提供了begin tran,commit tran和rollback tran来使用事务.begin tran表示开始事务, commit tran表示提交事 ...

  4. [转载] C++ STL之 vector的capacity和size属性区别

    参考链接: C++ Vector中capacity与size vector中这两个属性很容易弄混淆. size是当前vector容器真实占用的大小,也就是容器当前拥有多少个容器. capacity是指 ...

  5. 关于C++ STL 中advance()、 distance() 、begin()、end()、prev()、next() 函数的使用

    1.advance():用于将迭代器前进(或者后退)指定长度的距离 #include <iostream> // std::cout #include <iterator> / ...

  6. (C++ STL)list的实现

    #include <iostream> using namespace std; //採用迭代器和空间配置器所实现的双向链表的基本功能 template<class _Ty,clas ...

  7. STL中map和string, vector 用法详解

    1. map 用法详解 std map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成 ...

  8. c++ 将deque部分元素赋值给vector_《STL源码剖析》学习笔记——序列式容器vector

    目录 1.容器的概观与分类 2.vector概述 2.1 vector 的迭代器 2.2 vector数据结构 2.3 vector构造与内存管理 2.4 vector的元素操作 1.容器的概观与分类 ...

  9. STL工具书(常用用法总结)

    STL工具书(常用用法总结) 此博客可用于常用STL用法的快速查询与使用, 对于原理方面可以查阅相关文档. 目录 STL工具书(常用用法总结) 1. 容器 1.1 序列式容器 1. 数组(array) ...

最新文章

  1. cpu,内存,虚拟内存,硬盘,缓存之间是什么关系??
  2. rancher使用fluentd-pilot收集日志分享
  3. android调用c闪退未看到log,解决:Android开发 看不到崩溃的日志
  4. 0227互联网新闻 | 腾讯与英特尔联合推出云游戏平台“腾讯即玩”;华为企业业务MWC现场发布数字平台...
  5. SAP UI5 的 sap-ui-bootstrap script 脚本标签各属性解析
  6. win10 linux uefi启动不了系统安装教程,【从踩坑到教程】win10下ubuntu18.04双系统UEFI模式安装、Nvidia驱动安装...
  7. TypeScript泛型接口
  8. 数据库的字段属性(重点)
  9. 【ArcGIS|空间分析|网络分析】11 利用流量数据执行网络分析
  10. 安装Adobe Reader 时报错:HRESULT:0x80070422
  11. 三维医学图像数据标注 3D Slicer
  12. python软件工程师认证证书报考条件_软件工程师怎么考 报考条件是什么
  13. “拖延症”的良方-对于追求完美,自制力差,情绪化的人很受用
  14. 安卓ROOT工具汇总
  15. 计算机网络实验-网络嗅探器
  16. centos6查看运行服务器,centos如何查看端口是否开放_网站服务器运行维护,centos,端口...
  17. 做一个jQuery插件---带“旋转木马”效果的轮播图
  18. linux cp命令复制整个文件夹
  19. php 如何将image图片转化为字符串
  20. 【raspberrypi】树莓派官方7寸屏入门指南

热门文章

  1. 小姐姐在家也能采矿,颠覆了我的认知
  2. Django合并清理migrations文件
  3. 如何做竞品分析报告?
  4. 2022年智能无人系统与人工智能国际会议(SIUSAI 2022)
  5. Cannot determine value type from string ‘xxx‘
  6. 第六章第十题(使用isPrime方法)(Use the isPrime Method)
  7. 2021-2027全球与中国螺旋齿轮减速器市场现状及未来发展趋势
  8. 315 曝光充电桩黑幕,还能不能好好充个电了?
  9. 配置maven从自己的私服下载jar包nexus、maven私服仓库(二)
  10. 声发射传感器的选择经验