由string类类型和vector类类型定义的类型,用以保存任意string对象或vector对象的长度,标准库类型将size_type定义为unsigned类型

string::size_type它在不同的机器上,长度是可以不同的,并非固定的长度。但只要你使用了这个类型,就使得你的程序适合这个机器。与实际机器匹配。

string::size_type从本质上来说,是一个整型数。关键是由于机器的环境,它的长度有可能不同。 例如:我们在使用 string::find的函数的时候,它返回的类型就是 string::size_type类型。而当find找不到所要找的字符的时候,它返回的是 npos的值,这个值是与size_type相关的。

假如,你是用 string s; int rc = s.find(.....); 然后判断,if ( rc == string::npos ) 这样在不同的机器平台上表现就不一样了。如果,你的平台的string::size_type的长度正好和int相匹配,那么这个判断会侥幸正确。但换成另外的平台,有可能 string::size_type的类型是64位长度的,那么判断就完全不正确了。 所以,正确的应该是: string::size_type rc = s.find(.....); 这个时候使用 if ( rc == string::npos )就回正确了。

  st.size()表示st中的字符数量,字符数量的统计是由 1 开始累计计算的,所以字符数量正好比字符串的下标索引数(由 0 开始累计计算)大 1 ,这里的index != st.size();的效果等同于index < st.size();

总的来说就是string 和 vector的成员函数返回的数值是size_type类型的,并不是单纯的int型等等。所以运气好的话可能没有检查出错误,运气差的话就不行了。

最新文章

  1. 用Canvas+Javascript FileAPI 实现一个跨平台的图片剪切、滤镜处理、上传下载工具
  2. RocketMQ与kafka对比(18项差异)-转自阿里中间件
  3. javascript的escape()方法
  4. JavaScript实现输入验证(简单的用户注册)
  5. Bash Shell的操作环境
  6. Xcode常用的快捷键有哪些?
  7. (五)backbone - DEMO - 通信录改造之使用requirejs
  8. Android中Handle详解
  9. ubuntu下pip的安装和使用
  10. Android四大组件之一Service介绍-android学习之旅(十二)
  11. 导出CityGML
  12. 17秋 软件工程 团队第五次作业 Alpha Scrum11
  13. Centos7禁止或者允许开机启动服务
  14. [剑指Offer]34-二叉树中和为某一值的路径
  15. tms web core 通过URL 传递参数
  16. 自定义兼容多种Protobuf协议的编解码器
  17. IDEA Mybatis plugin插件破解
  18. PHP随机浮点数
  19. UTF-8以字节为单位对Unicode进行编码
  20. Commons FileUpLoad 两种上传方式解

热门文章

  1. dragView 屏幕拖拽并且弹出菜单的控件
  2. oracle调优使用到相关sql
  3. 第三章 Python函数
  4. BZOJ 3413 匹配 (后缀自动机+线段树合并)
  5. BZOJ 1396 识别子串 (后缀自动机+线段树)
  6. ajax异步请求获取数据,实现滚动数字的效果。
  7. Ubuntu(Linux Mint):sudo apt-get upgrade升级失败
  8. Mysql怎么样避免全表扫描,sql查询优化
  9. POJ 2154
  10. Detours改动段属性漏洞