• C++中的npos,size_t,size_type


    string类提供了6种查找函数,每种函数以不同形式find命名,这些操作全都返回string::size_type类型的值,以下标形式标记查找匹配所发生的位置,或返回一个名为string::npos的特殊值,说明查找没有匹配,string类将npos定义为保证大于任何有效下标的值

    简言之:当值与npos相等时,说明没有找到,两者比较不等时,说明找到了。

    npos表示大于任何有效下标值,可以用string::npos作为string的成员函数的一个长度参数,表示直到字符串结束。

    这里的string::npos就是一个长度参数,表示直到字符串的结束,配合idx+1表示,string的剩余部分。

    size_t和size_type:

    总结:

    size_t类型的命名空间是全局的命名空间,size_type是类中定义的类型属性,用以保存任意string和vecotr类对象的长度,size_type是容器概念,没有容器不能使用,size_type是一个unsigned int类型。容器中不用int来表示sizeof的原因是,int在不同的机器上长度不一样,16位的机器int值太小,不够用来表示。string类中定义有string::size_type类型,vector类中定义有vector<int>::size_type类型,后两者的定义不重复,只是命名空间不同而已。

    size_t:定义在cstddef头文件中,与机器相关的unsigned类型,其大小足以保证存储内存中对象的大小

    size_type:被定义为unsigned类型,与机器无关(即在不同的机器上,长度可以是不同的,并非固定长度),同样能存储任意长度的对象大小

    注意:size_type本质上来说是个整型数,sizeof的结果类型是size_t

    千万注意:不要把size_t类型的数和int类型的进行大小比较,机器会把int的转化成无符号再比较,与原本想要实现的功能的本意不同了。

    引自https://zhidao.baidu.com/question/485415372.html

    https://blog.csdn.net/lzx_bupt/article/details/6558566

    https://blog.csdn.net/jiejinquanil/article/details/51789682

    https://blog.csdn.net/wallwind/article/details/6583714

  • 相关阅读:
    流程图制作在云上 https://www.processon.com/
    白板编程浅谈——Why, What, How
    如何创建一个非常酷的3D效果菜单
    Xcode及模拟器SDK下载
    Swift项目兼容Objective-C问题汇总
    iOS 多个精致动画
    代码注释中的5要与3不要
    如何处理iOS中照片的方向
    会报编译器警告的Xcode 6.3新特性:Nullability Annotations
    iOS应用架构谈 view层的组织和调用方案
  • 原文地址:https://www.cnblogs.com/ymd12103410/p/9524105.html
Copyright © 2020-2023  润新知