首页 > 其他分享 >vector<int> locationVec; locationVec[i] 和 locationVec.at(i) 的区别

vector<int> locationVec; locationVec[i] 和 locationVec.at(i) 的区别

时间:2023-08-04 10:23:58浏览次数:27  
标签:元素 超出范围 索引 区别 访问 vector locationVec

在C++中,vector<int>是一个动态数组,可以存储整数类型的元素。locationVec是一个vector<int>类型的对象。

locationVec.at(i)locationVec[i]都用于访问locationVec中的元素,但它们有一些区别。

  1. locationVec.at(i): 这是一个成员函数,用于返回locationVec中索引为i的元素的值。如果索引i超出了有效范围,即超出了locationVec的大小,at()会抛出一个std::out_of_range异常。这种情况下,可以通过捕获异常来处理超出范围的访问。
    try {
        int value = locationVec.at(i);
        // 处理value的值
    } catch (const std::out_of_range& e) {
        // 处理访问超出范围的情况
    }
  1. locationVec[i]: 这是一个运算符重载,用于返回locationVec中索引为i的元素的值。与at()不同,如果索引i超出了有效范围,即超出了locationVec的大小,operator[]不会抛出异常,而是产生未定义的行为。这意味着可能会访问到无效的内存位置,导致程序崩溃或产生不可预测的结果。
因此,如果您确定索引值在有效范围内,可以使用locationVec[i]来访问元素,因为它的效率更高。但如果索引值可能超出范围,为了安全起见,建议使用locationVec.at(i)并处理可能的异常。

标签:元素,超出范围,索引,区别,访问,vector,locationVec
From: https://www.cnblogs.com/kekit-rei/p/17605199.html

相关文章

  • Java面试题 P54:微服务篇:微服务-服务注册和发现是什么意思?SpringCloud如何实现服务注册
              ......
  • Modbus tcp转ETHERCAT网关modbus tcp主从站区别
    捷米JM-ECT-TCP网关能够连接到Modbustcp总线和ETHERCAT总线中,实现两种不同协议设备之间的通讯。这个网关能够大大提高工业生产的效率和生产效益,让生产变得更加智能化。捷米JM-ECT-TCP是自主研发的一款ETHERCAT 从站功能的通讯网关。该产品主要功能是将ETHERCAT 网络和MODBU......
  • 主键约束与唯一约束的区别
    数据库中的主键约束和唯一约束是两种不同的约束类型,它们用于确保数据的唯一性。它们之间的区别如下:主键约束(PrimaryKeyConstraint):·主键约束用于定义一个表中的主键。主键是用来唯一标识表中每一行数据的列或列组合。·主键约束要求主键的值在表中是唯一的,并且不能为NULL。......
  • 【面试精讲】Java:Exception 和 Error 有什么区别?
    前言众所周知,没有BUG的程序只会出现在程序员的梦里,异常情况如影随形地纠缠着我们,只有正确处理好意外情况,才能保证程序的可靠性。Java语言在设计之初就提供了相对完善的异常处理机制,这也是Java得以大行其道的原因之一,因为这种机制大大降低了编写和维护可靠程序的门槛。如今,异常......
  • apollo.configService 和 apollo.meta 的区别
    https://www.apolloconfig.com/#/zh/usage/java-sdk-user-guide 1.2.2.2跳过ApolloMetaServer服务发现适用于apollo-client0.11.0及以上版本一般情况下都建议使用Apollo的MetaServer机制来实现ConfigService的服务发现,从而可以实现ConfigService的高可用。不过apoll......
  • 箭头函数和普通函数的区别
    1、普通函数定义:编程中常见的一种函数类型,也被称为一般函数或普通方法。它们是一系列执行特定任务的代码块或子程序。普通函数通常包含输入参数和返回值,用于接收输入数据、进行处理,并返回结果。//这里的name是指函数名(自取)functionname(参数){//函......
  • AddMvcCore,AddControllers,AddControllersWithViews,AddRazorPages的区别
    AddMvc/AddMvcCore/AddControllers等区别1.services.AddMvcCore()只注册运行 Controller/RazorPages 必要的核心服务,确保 Pipeline 程序可动作,其馀如像 DataAnnotationModelValidation、身分验证等服务要自己加挂,除有特殊客制需求,一般不太常用。2.services.AddControl......
  • 1.【linux】 下根目录,家目录区别
    1.【linux】下根目录,家目录区别家目录是在根目录里面。1.家目录一般普通用户,家目录是/home/用户名root用户,家目录是/rootroot登录系统,执行如下命令进入root的家目录cd/cd~进入家目录后执行如下命令获取具体路径pwd2.用户切换1.暂时的(root权限)①需要使用root权限......
  • 中间人攻击 http与https的区别
    由一个视频引发的问题 https://v.douyin.com/iJJ9n2r7/ 中间人攻击  由于HTTP本身不具备加密的功能,所以也无法做到对通信整体(使用HTTP协议通信的请求和相应的内容)进行加密,即HTTP报文使用明文(未经过加密的报文)方式发送。(对应于信件使用的文字不加密)抓包:可以得到cookie......
  • JavaScript ES5模块导入ES6区别
    JavaScriptES5模块导入ES6区别   ES6引入了原生的模块系统,使用import和export关键字来导入和导出模块。ES6模块系统相比ES5的导入方法具有以下几个区别: 1.语法不同:-ES5:使用Require.js或CommonJS,通过`require`方法导入模块。-ES6:使用import关键字导入模块。 2......