转载:https://blog.csdn.net/chenjiayi_yun/article/details/18507659

[]操作符的源码

reference

operator[](size_type __n)

{ return *(begin() + __n); }

at函数的源码

reference
      at(size_type __n)
      {
_M_range_check(__n);
return (*this)[__n]; 
      }

可以看出来at函数主要是多做个超出范围的 检查。

void
      _M_range_check(size_type __n) const
      {
if (__n >= this->size())
 __throw_out_of_range(__N("vector::_M_range_check"));
      }

以下是一个小函数,可以用来检查下:

void Testvector1()
{
vector<int> v;
v.reserve();//reserve只是用来预分配空间的,但要访问的话还是要压入数据或者执行resize,也就是初始化要用到的数据
for(int i=; i<; i++)
{
v.push_back(i); //在V的尾部加入7个数据
} try
{
int iVal1 = v[];
// not bounds checked - will not throw int iVal2 = v.at();
// bounds checked - will throw if out of range
}
catch(const exception& e)
{
cout << e.what();
}
}

使用[]云算法结果输出结果:

vector at()函数比 []运算符操作安全的更多相关文章

  1. MySQL 聚合函数、运算符操作、约束、表的复制

    1.聚合函数 1.分类 avg(字段名) : 求该字段平均值 sum(字段名) : 求和 max(字段名) : 最大值 min(字段名) : 最小值 count(字段名) : 统计该字段记录的个数2. ...

  2. vector作为函数返回类型

    在实际的操作中,我们经常会碰到需要返回一序列字符串或者一列数字的时候,以前会用到数组来保存这列的字符串或者数字,现在我们可以用vector来保存这些数据.但是当数据量很大的时候使用vector效率就比 ...

  3. R: vector 向量的创建、操作等。

    ################################################### 问题:创建.操作向量   18.4.27 怎么创建向量 vector,,及其相关操作 ??? 解 ...

  4. 【C/C++开发】容器set和multiset,C++11对vector成员函数的扩展(cbegin()、cend()、crbegin()、crend()、emplace()、data())

    一.set和multiset基础 set和multiset会根据特定的排序准则,自动将元素进行排序.不同的是后者允许元素重复而前者不允许. 需要包含头文件: #include <set> ...

  5. Hbase之使用回调函数进行批处理操作

    import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; impo ...

  6. day3-Python集合、函数、文件操作,python包的概念

    本节大纲: 1 python程序由包(package).模块(module)和函数组成.包是由一系列模块组成的集合.模块是处理某一类问题的函数和类的集合. 2 包就是一个完成特定任务的工具箱. 3 包 ...

  7. C++学习27 用全局函数重载运算符

    运算符重载函数既可以声明为类的成员函数,也可以声明为所有类之外的全局函数. 运算符重载函数作为类的成员函数 将运算符重载函数声明为类的成员函数时,二元运算符的参数只有一个,一元运算符不需要参数.之所以 ...

  8. C++标准库vector类型的使用和操作总结

    vector是一种类型对象的集合,它是一种顺序容器,容器中的所有对象必须都是同一种类型.想了解顺序容器的更多内容:C++顺序容器知识总结.vector的对象是可以动态生长的,这说明它在初始化时可以不用 ...

  9. VC 在调用main函数之前的操作

    title: VC 在调用main函数之前的操作 tags: [VC++, 反汇编, C++实现原理] date: 2018-09-16 10:36:23 categories: VC++反汇编分析 ...

随机推荐

  1. UGUI实现摇杆

    效果图

  2. MyBatis基础入门《十八》动态SQL(if-where)

    MyBatis基础入门<十八>动态SQL(if-where) 描述: 代码是在<MyBatis基础入门<十七>动态SQL>基础上进行改造的,不再贴所有代码,仅贴改动 ...

  3. webpack打包报错

    Invalid configuration object. Webpack has been initialised using a configuration object that does no ...

  4. c#之字符串,列表,接口,队列,栈,多态

    1.字符串的用法 using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...

  5. 安装redis脚本

    #!/bin/bash#Function: Install redis#Author: DengYong#Date: 20151126 cd /root/packagewget http://down ...

  6. c#中的模态对话框和非模态对话框

    模态对话框弹出窗口阻止调用窗口的所有消息响应.只有在弹出窗口结束后调用窗口才能继续.在模态窗口“关闭”后,可以读取模态窗口中信息,包括窗口的返回状态,窗口子控件的值. 非模态对话框可以在弹出窗口和调用 ...

  7. windows假装更新升级

    http://fakeupdate.net/ 进入这个网站,选择一款系统界面,按F11进去全屏 比较有趣

  8. 31网络通信之Select模型

    多路复用并发模型  -- select #include<sys/select.h> #include<sys/time.h> int select(int maxfd,  f ...

  9. 关于nginx的安装

    今天倒腾nginx,当运用命令service nginx start 出现了这个:Job for nginx.service failed because the control process ex ...

  10. hdu5290树形dp

    题意 给了n个点的数 每个点有一个w[i]权值,如果你选择了i这个点那么距离i这个点距离为w[i]的点将被除去,最后问 选则尽量少的点把这n个点全部删除 1<=n<=100000, 0&l ...