尽管能计算得到尾后指针,但这种用法极易出错。为了让指针的使用更简单、更安全,c++新标准引入了两个名为begin和end的函数。这两个函数与容器中的两个同名成员功能类似,不过数组毕竟不是类类型,因此这两个函数不是成员函数。正确的使用形式是将数组作为它们的参数:

	int a[] = { 0,1,2,3,4,5,6,7,8,9 };
int *beg = begin(a);//指向a首元素的指针
int *last = end(a);//指向a尾元素的下一位置的指针

  不能用动态数组

这两个函数定义在iterator头文件中。

  使用这两个函数可以很容易写出一个循环并处理数组中的元素。例如:

int *pbeg=begin(a),*pend=end(a);
while(pbeg!=pend&&*pbeg>=0)
++pbeg;

  特别要注意,尾后指针不能执行解引用和递增操作。

  通过函数传参的数组无法调用这两个函数,因为数组形参实际传递的是数组指针。

标准库函数begin和end------c++primer的更多相关文章

  1. 范围for语句 && 列表初始值&& 标准库函数begin和end

    范围for语句: 引入的意义:简化传统for的编写,主要用于遍历给定序列中的每个元素并对序列中的每个值执行某种操作,其语法形式是: for( 声明: 给定序列) { 执行的操作. } 其中,“给定序列 ...

  2. 标准库函数atoi的实现

    标准库函数atoi用于将字符串类型的数据转换为整形数据:在转换过程中要考虑空指针.空字符串"".正负号,溢出等情况 这里是将字符串str转换为32位整型,其正数的最值为0x7FFF ...

  3. C语言提供了几个标准库函数 itoa() atoi()

    C语言提供了几个标准库函数C语言提供了几个标准库函数,可以将任意类型(整型.长整型.浮点型等)的数字转换为字符串.以下是用itoa()函数将整数转换为字符串的一个例子: # include <s ...

  4. C89标准库函数手册(待整理)

    http://zh.cppreference.com/w/c 前言 ANSI C(C89)标准库函数共有15个头文件.这15个头文件分别为: 1.<assert.h>            ...

  5. UC编程:通过fwrite()和write()比较标准库函数和系统调用的速度

    fwrte是C标准库中提供的函数,是对write函数的扩展与封装,write则是Unix系统提供的函数.按照常理来讲,系统调用肯定比使用库快的多,但是事实正好相反 Why?原因就在于缓冲的问题,fwi ...

  6. C/C++语言的标准库函数malloc/free与运算符new/delete的区别

    概括地说 1.malloc与free是C++/C的标准库函数,new/delete是C++的运算符,它们都可用于申请动态内存和释放内存. 2.对于非内部数据类型的对象而言,只用malloc/free无 ...

  7. c++11 标准库函数 std::move 和 完美转发 std::forward

    c++11 标准库函数 std::move 和 完美转发 std::forward #define _CRT_SECURE_NO_WARNINGS #include <iostream> ...

  8. C++/C语言的标准库函数与运算符的区别new/delete malloc/free

    malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符.它们都可用于申请动态内存和释放内存.下面来看他们的区别. 一.操作对象有所不同 malloc与free是C++ ...

  9. C++ - 常用的标准库函数

      写在前面 C++是一门博大精深的语言,也是最难学的一门编程语言,每一位励志学好C++的程序员都需要从基本功开始,稳扎稳打. 自从1998年C++ standard定案以后,C++程序库便有了大幅扩 ...

随机推荐

  1. 谷歌浏览器无法播放QQ空间视频动画的解决方案

    https://qzonestyle.gtimg.cn/qzone/photo/v7/js/module/flashDetector/flash_tutorial.pdf Chrome开启⽅法 1. ...

  2. keepalived 预防脑裂检测脚本

    1 检查vip [root@mysql2 keepalived]# cat /etc/keepalived/check_brain_keepalived.sh #!/bin/bash # 检查脑裂的脚 ...

  3. java实现递归(1)

    1.递归算法基本思路: Java递归算法是基于Java语言实现的递归算法.递归算法是一种直接或者间接调用自身函数或者方法的算法.递归算法实质是把问题分解成规模缩小的同类问题的子问题,然后递归调用方法表 ...

  4. mysql整数类型

    数值类型 1.整数类型 整型类型的后面的宽度,不是存储宽度,是显示宽度,不够位数用0添加,够位数使用原数据 整数类型:TINYINT SMALLINT MEDIUMINT INT BIGINT 作用: ...

  5. Linux性能监测:内存篇

    在操作系统里,虚拟内存被分成页,在 x86 系统上每个页大小是 4KB.Linux 内核读写虚拟内存是以 “页” 为单位操作的,把内存转移到硬盘交换空间(SWAP)和从交换空间读取到内存的时候都是按页 ...

  6. python's eighth day for me

    f : 变量,f_obj, file, f_handler,...文件句柄. open : windows 的系统功能. windows 默认编码方式:gbk.   Linux 默认编码方式:utf ...

  7. springboot成神之——basic auth和JWT验证结合

    本文介绍basic auth和JWT验证结合 目录结构 依赖 config配置文件WebSecurityConfig filter过滤器JWTLoginFilter filter过滤器JWTAuthe ...

  8. 一个电脑同时运行 64bit 和 32bit 的eclipse 如何匹配 jdk环境

    一个电脑同时运行 64bit 和 32bit   的  eclipse 如何匹配 jdk环境 1 eclipse 分 64bit 和 32bit 两种.  64bit的eclipse 只能搭配 64b ...

  9. 使用GY89的BMP180模块获取温度和压强(海拔)

    最近要用一下GY89,GY89有三个模块,温度压强.加速度计.陀螺仪.通过不同的片选信号来选择. mbed库上都写好了,挺好的. 以下是自己的代码: #include "mbed.h&quo ...

  10. JAVA的FileOutput/InputStream使用实例

    在JAVA中,要读写文件,要使用Stream这个东西. Stream简单来说,可以看做在程序和文件之间打开了一个管道,然后把数据通过这个管道输送到文件或程序中去. FileOutput/InputSt ...