关于vector.size()的一些常见错误总结
1. 问题引入
通过查看[https://www.cplusplus.com/reference/vector/vector/] 的vector.size()说明,即
member type | definition | notes |
---|---|---|
size_type | an unsigned integral type that can represent any non-negative value of difference_type | usually the same as size_t |
从表中可以知道:vector.size()的返回值是vector动态数组容器的尺寸大小,也就是内部元素个数。
但是我们容易忽略的是返回值的数据结构是 unsigned int,而不是int,这就会引发一些问题。
2. 常见错误
2.1 循环遍历时的警告
当我们利用for循环遍历vector的元素时,需要注意的是迭代参数最好设置为unsigned int,而不是int,即
for (unsigned int i = 1; i < nums.size(); i++)
否则会引发警告:
C4018 “<”: 有符号/无符号不匹配
2.2 判断时的错误
例如下面这段程序:
int i = 1;
vector<int> nums = { 3,2,1 };
int ans = 0;
if (i - nums.size() < 0)
ans = 1;
return ans;
我们想要ans返回的1,但时实际输出为0,通过调试我们发现,if语句无法进入,这就是因为i为int类型,而nums.size()为unsigned int类型,两者做运算,会强制更改为unsigned int类型,也就导致i - nums.size() > 0,无法进入if语句,此时改进方法有两种:
- 方法一:强制转化为int类型,即
if ((int)(i - nums.size()) < 0)
或者if (i - (int)nums.size() < 0)
- 方法二:将nums.size()移动到比较符号的一边,即
if (i < nums.size())
关于vector.size()的一些常见错误总结的更多相关文章
- Hibernate常见错误整理
Hibernate常见错误合集 1.错误:object references an unsaved transient instance - save the transient instance ...
- C语言常见错误中英文对照表
C语言常见错误中英文对照表(网络搜索及经验积累不断更新中) 常见错误中英文对照表 fatal error C1003: error count exceeds number; stopping co ...
- 对DB2常见错误的列举以及破解方案
我们今天主要描述的是DB2常见错误还有正对这些错误的解决方案,以下就是文章对DB2常见错误还有正对这些错误的解决方案的主要内容的详细描述. 以下的文章主要是介绍DB2常见错误还有正对这些错误的解决方案 ...
- Elasticsearch 集群和索引健康状态及常见错误说明
之前在IDC机房线上环境部署了一套ELK日志集中分析系统, 这里简单总结下ELK中Elasticsearch健康状态相关问题, Elasticsearch的索引状态和集群状态传达着不同的意思. 一. ...
- postfix 邮箱设置及常见错误
postfix 邮箱设置及常见错误 1.如果装了sendmail的话,先卸载了. yum remove sendmail 2.安装 Postfix yum install postfix 3.更改默认 ...
- RSA加密常用的填充方式 以及 常见错误
一.RSA加密常用的填充方式 1.RSA_PKCS1_PADDING 输入:比 RSA modulus 短至少11个字节.如果输入的明文过长,必须切割,然后填充 输出:和modulus一样长 根据这个 ...
- LoadRuner常见错误
LoadRuner常见错误 一.Step download timeout (120 seconds) 这是一个经常会遇到的问题,解决得办法走以下步骤: 1. 修改run time setting中的 ...
- centos linux 系统日常管理4 scp,rsync,md5sum,sha1sum,strace ,find Rsync 常见错误及解决方法 第十七节课
centos linux 系统日常管理4 scp,rsync,md5sum,sha1sum,strace ,find Rsync 常见错误及解决方法 第十七节课 rsync可以增量同步,scp不行 ...
- 解决hadoop 集群启动常见错误办法
hadoop 集群常见错误解决办法 hadoop 集群常见错误解决办法: (一)启动Hadoop集群时易出现的错误: 1. 错误现象:Java.NET.NoRouteToHostException ...
随机推荐
- 安装oracle 时“[INS-30014]无法检查指定的位置是否位于 CFS上”问题
错误截图: 错误信息: [INS-30014]无法检查指定的位置是否位于 CFS上 解决方案: 通过修改hosts文件,向C:\Windows\System32\drivers\etc\hosts文件 ...
- python工业互联网应用实战16-前后端分离模式之修改与删除
前一章节介绍了List页面的JQuery技术栈的迁移,这一章节我们花一些篇幅来说说修改/查看页面的技术栈迁移.相对于List的获取数据,修改页面涉及到数据Post提交到后台更新数据库.我们仍旧小步迭代 ...
- Python使用 Kubernetes API 访问集群
通过将身份认证令牌直接传给 API 服务器,可以避免使用 kubectl 代理,像这样:使用 grep/cut 方式: 通过将身份认证令牌直接传给 API 服务器,可以避免使用 kubectl 代理, ...
- MongoDB(13)- 查询操作返回指定的字段
插入测试数据 db.inventory.insertMany( [ { item: "journal", status: "A", size: { h: 14, ...
- Guava Cache,Java本地内存缓存使用实践
Guava Cache,网上介绍很多,我就不赘述了. 分享一篇好的文章: Guava Cache内存缓存使用实践-定时异步刷新及简单抽象封装 Google Guava 3-缓存 在原作者基础上,我做了 ...
- conda 按照指定源下载python包
conda 按照指定源下载python包 换成了国内的pip源就可以正常安装了,我使用的是:pip install xlrd -i http://pypi.douban.com/simple --tr ...
- GO语言复合类型02---数组
package main import "fmt" /* 固定长度.固定类型的数据容器 */ /*数组的声明*/ func main031() { //var array [5]i ...
- Processing平台之PVector求角度
问题:在processing 平台,通过给定三个PVector向量,如何求他们之间的夹角,同时确定是在左侧还是右侧? 如图所示,在processing 平台中,PVector表示点的坐标是以原点为起点 ...
- java中的Class.forName的作用
Class.forName有什么作用 Class.forName(xxx.xx.xx) 返回的是一个类 首先你要明白在java里面任何class都要装载在虚拟机上才能运行.这句话就是装载类用的(和ne ...
- YOLOv4 资源环境配置和测试样例效果
YOLOv4 资源环境配置和测试样例效果 基本环境:cuda=10.0,cudnn>=7.0, opencv>=2.4 一.下载yolov4 git clone https://githu ...