zoukankan      html  css  js  c++  java
  • c size_t

    为了使自己的程序有很好的移植性,C++程序员应该尽量使用size_t和size_type,而不是int,unsigned。
    size_t 无符号整形,代表系统上的最大int类型。
    在标准C/C++的语法中,只有int float char bool等基本的数据类型,至于size_t,或size_type都是以后的编程人员为了方便记忆所定义的一些便于理解的由基本数据类型的变体类型。
    size_t是为了方便系统之间的移植而定义的,它是一个无符号整型,在32位系统上定义为:unsigned int;在64位系统上定义为unsigned long。size_t一般用来计数,sizeof操作符的结果类型是size_t,该类型保证能容纳实现所建立的最大对象的字节大小。它的意义大致是“适用于内存中可容纳的数据项目的个数的无符号整数类型”所以,它在数组下标和内存管理函数之类的地方广泛使用。例如:typedef int size_t;定义了size_t为整型。因为size_t类型的数据其实是保存了一个整数,所以它也可以做加减乘除,也可以转化为int并赋值给int类型的变量。类似的还有wchar_t, ptrdiff_t等。
    size_type是由string类类型和vector类类型定义的类型,用于保存任意string对象或vector对象的长度,标准库类型将size_type定义为unsigned类型。string::size_type它在不同的机器上,长度可以是不同的,并非固定的长度,但只要你使用了这个类型,就是的你的程序适这个机器,与实际机器匹配。
     
    size_t和size_type的主要区别:
    1. size_t是全局定义的类型;size_type是STL类中定义的类型属性。在使用STL中表明容器长度的时候,我们一般用size_type。
    2. string::size_type 类型一般就是unsigned int, 但是不同机器环境长度可能不同 win32 和win64上长度差别; size_t一般也是unsigned int
    3. size_t 使用的时候头文件需要 <cstddef> ;size_type 使用的时候需要<string>或者<vector>
    4. 下述长度均相等,长度为 win32:4      win64:8
          sizeof(string::size_type)
         sizeof(vector<bool>::size_type)
         sizeof(vector<char>::size_type)
         sizeof(size_t)
    5. 二者联系:在用下标访问元素时,vector使用vector::size_type作为下标类型(size_type是容器概念,没有容器不能使用),而数组下标的正确类型则是size_t
  • 相关阅读:
    Open 5分钟:恺英收集闵懿
    Open 5分钟:摩卡全国宋啸飞
    互联网十大病毒集体名单曝光
    浩大游戏CEO谭群钊:2011将进一步加大海内拓展
    CustomSongSender.com:定制歌曲作为礼物
    米聊:跨运营商收费即时通讯
    说说Google Cloud Connect
    松下将于3月19日出售无需触碰的感触式便携电视
    Groupon中国网站贵客上线 获腾讯云锋基金投资
    诺基亚西门子并购摩托罗案前景堪忧
  • 原文地址:https://www.cnblogs.com/perfei/p/10919608.html
Copyright © 2011-2022 走看看