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()的一些常见错误总结的更多相关文章

  1. Hibernate常见错误整理

    Hibernate常见错误合集   1.错误:object references an unsaved transient instance - save the transient instance ...

  2. C语言常见错误中英文对照表

    C语言常见错误中英文对照表(网络搜索及经验积累不断更新中) 常见错误中英文对照表 fatal error C1003:  error count exceeds number; stopping co ...

  3. 对DB2常见错误的列举以及破解方案

    我们今天主要描述的是DB2常见错误还有正对这些错误的解决方案,以下就是文章对DB2常见错误还有正对这些错误的解决方案的主要内容的详细描述. 以下的文章主要是介绍DB2常见错误还有正对这些错误的解决方案 ...

  4. Elasticsearch 集群和索引健康状态及常见错误说明

    之前在IDC机房线上环境部署了一套ELK日志集中分析系统, 这里简单总结下ELK中Elasticsearch健康状态相关问题, Elasticsearch的索引状态和集群状态传达着不同的意思. 一.  ...

  5. postfix 邮箱设置及常见错误

    postfix 邮箱设置及常见错误 1.如果装了sendmail的话,先卸载了. yum remove sendmail 2.安装 Postfix yum install postfix 3.更改默认 ...

  6. RSA加密常用的填充方式 以及 常见错误

    一.RSA加密常用的填充方式 1.RSA_PKCS1_PADDING 输入:比 RSA modulus 短至少11个字节.如果输入的明文过长,必须切割,然后填充 输出:和modulus一样长 根据这个 ...

  7. LoadRuner常见错误

    LoadRuner常见错误 一.Step download timeout (120 seconds) 这是一个经常会遇到的问题,解决得办法走以下步骤: 1. 修改run time setting中的 ...

  8. centos linux 系统日常管理4 scp,rsync,md5sum,sha1sum,strace ,find Rsync 常见错误及解决方法 第十七节课

    centos linux 系统日常管理4  scp,rsync,md5sum,sha1sum,strace ,find Rsync 常见错误及解决方法  第十七节课 rsync可以增量同步,scp不行 ...

  9. 解决hadoop 集群启动常见错误办法

    hadoop 集群常见错误解决办法 hadoop 集群常见错误解决办法: (一)启动Hadoop集群时易出现的错误: 1.   错误现象:Java.NET.NoRouteToHostException ...

随机推荐

  1. STM32自己的封装库

    以前一直使用STM32的标准库,需要一步步地将代码加进去,将编译选项设置好,然后再编译整个工程. 这个编译过程是一个相当慢的过程!完全编译大约需要一支烟的时间.每次建立工程都这么编译,是一个相当浪费时 ...

  2. lambda 函数执行流程 递归注意

  3. Django优雅集成MongoDB

    Django优雅集成MongoDB   将Django与MongoDB集成 在不更改Django ORM的情况下,将MongoDB用作Django项目的后端数据库.使用Django Admin在Mon ...

  4. openresty 学习笔记三:连接redis和进行相关操作

    openresty 学习笔记三:连接redis和进行相关操作 openresty 因其非阻塞的调用,令服务器拥有高性能高并发,当涉及到数据库操作时,更应该选择有高速读写速度的redis进行数据处理.避 ...

  5. Resnet-50网络结构详解

    解决的问题: 由于梯度消失,深层网络很难训练.因为梯度反向传播到前面的层,重复相乘可能使梯度无穷小.结果就是,随着网络的层数更深,其性能趋于饱和,甚至迅速下降. 核心思想: 引入一个恒等快捷键(也称之 ...

  6. Unity3d无法导入TensorFlowSharp plugin包问题

    环境: unity3d:2018.3.0.f2 版本 解决方法: TensorFlowSharp 仍然属于测试版本. 因此,需要将Unity3d 转到测试版本. (1)点击 File > Bui ...

  7. Fedora 34成哑巴了?

    原由 前几天刚更新了Fedora34,完全沉浸在Gnome40的喜悦中.但是今天用耳机听Apple Music的时候完全傻了,音量控制旋钮调了半天也没有声音,难道声卡坏了?于是,我试探性的用Parro ...

  8. Redis五种基础与三种高级数据结构解析

    记得点赞+关注呦. 前言 在 Redis 最重要最基础就属 它丰富的数据结构了,Redis 之所以能脱颖而出很大原因是他数据结构丰富,可以支持多种场景.并且 Redis 的数据结构实现以及应用场景在面 ...

  9. MySQL 页完全指南——浅入深出页的原理

    之前写了一些关于 MySQL 的 InnoDB 存储引擎的文章,里面好几次都提到了页(Pages)这个概念,但是都只是简要的提了一下.例如之前在聊 InnoDB内存结构 时提到过,但当时的重点是内存架 ...

  10. 从菜鸟到大神:Java高并发核心编程(连载视频)

    任何事情是有套路的,学习是如此, Java的学习,更是如此. 本文,为大家揭示 Java学习的套路 背景 Java高并发.分布式的中间件非常多,网上也有很多组件的源码视频.原理视频,汗牛塞屋了. 作为 ...