size_t与size_type有什么区别

shore1111 2008-05-03 09:58:37
如题,刚接触这一方面不是很清楚,还望明白人赐教~~
...全文
6656 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
wei318525 2012-10-17
  • 打赏
  • 举报
回复
学习了
zzhays 2012-10-02
  • 打赏
  • 举报
回复
4,size_t 使用的时候头文件需要 <cstddef>【<tchar.h>(_T())】 ;size_type 使用的时候需要<string>或者<vector>更正下
zzhays 2012-10-02
  • 打赏
  • 举报
回复
1,size_type:由string类类型和vector类类型定义的类型,用以保存任意string对象或vector对象的长度,标准库类型将size_type定义为unsigned类型
2,string::size_type 制类型一般就是unsigned int, 但是不同机器环境长度可能不同 win32 和win64上长度差别;size_type一般也是unsigned int;
3,使用的时候可以参考:
string::size_type a =123;
vector<int>size_type b=234;
size_t b=456;
4,size_t 使用的时候头文件需要 <tchar.h> ;size_type 使用的时候需要<string>或者<vector>
5, sizeof(string::size_type)
sizeof(vector<bool>::size_type)
sizeof(vector<char>::size_type)
sizeof(size_t)
上述长度均相等,长度为win32:4 win64:8;
6,二者联系:在用下标访问元素时,vector使用vector::size_type作为下标类型,而数组下标的正确类型则是size_t;
还有更多,这个需要积累思考揣摩集思广益
omegabomb 2009-09-11
  • 打赏
  • 举报
回复
学习容器的时候用到很多
cnnbjwq 2009-03-04
  • 打赏
  • 举报
回复
是的,只是一种能马上让人看懂的符号!!
maomao19850220 2008-11-18
  • 打赏
  • 举报
回复
正在学习容器

帮助很大谢谢
jeff_shampoo 2008-10-18
  • 打赏
  • 举报
回复
size_t和size_type是为了独立于机器而定义的类型;
因为比如在这个电脑上int为2b,而另一台电脑上是4b。这样就给程序的可移植带来麻烦
为了解决这个问题,在库内定义了如上类型;
//为了使自己的程序有很好的移植性,c++程序员应该尽量使用size_t和size_type而不是int,unsigned;
taodm 2008-05-04
  • 打赏
  • 举报
回复
是“你不该关心它们有任何的相同”。
WingForce 2008-05-04
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 arong1234 的回复:]
size_t是全局定义的类型,size_type是STL类中定义的类属类型

[/Quote]
北极猩猩 2008-05-04
  • 打赏
  • 举报
回复
更正一下一楼和楼上的错误。

size_t不一定是int,他是受到平台影响的。
一般来说在32位系统中size_t是unsigned int
xzdwfwt111 2008-05-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 tangshuiling 的回复:]
在标准C/C++的语法中,只有int float char bool等基本的数据类型,至于size_t,或size_type都是以后的编程人员为了方便记忆所定义的一些便于理解的由基本数据类型的变体类型。
例如:typedef int size_t;定义了size_t为整型。
[/Quote]
1楼的正解!
北极猩猩 2008-05-04
  • 打赏
  • 举报
回复
sizt_t是C++的一个标准的typedef.全局有效,定义在全局名称空间中
size_type是STL定义的,只在namespace std中有效
arong1234 2008-05-04
  • 打赏
  • 举报
回复
size_t是全局定义的类型,size_type是STL类中定义的类属类型
langhua0001 2008-05-04
  • 打赏
  • 举报
回复
两个都不是基本数据类型,方便记忆而已
「已注销」 2008-05-04
  • 打赏
  • 举报
回复
很多这种例子,一般是unsigned int
vbman2003 2008-05-04
  • 打赏
  • 举报
回复
只是个别名而已
typedef不会创建新类型,只是给已有的类型建立一个新名称
Jncryang 2008-05-04
  • 打赏
  • 举报
回复
学习
nuaacj8888 2008-05-04
  • 打赏
  • 举报
回复
VC6中定义size_t为typedef unsigned int size_t
size_type应该是C++为例如string类和许多其他库类型定义的配套类型,使这些库类型的使用与机器无关,一般定义为unsigned类型(例如unsigned int unsigned long)
JackXu2018 2008-05-04
  • 打赏
  • 举报
回复
它们只是为了提高代码的易读性和可维护性
起了个别名而已
比如size_t、time_t、pid_t等等很多的,不过这些是UC中自己定义好的别名而已
cryingzgz 2008-05-03
  • 打赏
  • 举报
回复
如果把size_t和size_type换成a和b
在程序中的作用没有变
但是不如原来直观

size_t和size_type一看就知道是干什么用的
而a和b,会让看代码的人很茫然
加载更多回复(2)
Re:  FastDFS 分布式文件系统部署 ============================== FastDFS 分布式存储主要功能有:文件存储,文件同步,文件访问(文件上传/下载),特别适合以文件为载体的在线服务,如图片网站,视频网站等 它的存储特点是对文件体积小或超小,同时文件的数量特别多的存储情况支持较好,(如果是大文件的存储就推荐使用 Glusterfs 分布式网络文件存储),所谓的小文件就是指网站的图片,文档或者小视频等等,体积范围在4K~500MB之间。所谓的大文件指软件的镜像包、电影等等。 除了FastDFS存储文件特点之外,它同时具备自我负载均衡的能力,可以解决了运维自动化的关键问题。 # 块存储、文件存储、对象存储这三者的本质差别是什么? 1)块存储:磁盘阵列,硬盘(块存储主要是将裸磁盘空间整个映射给主机使用的) 2)文件存储:FTP、NFS服务器(解决文件无法共享的问题) 3)对象存储:内置大容量硬盘的分布式服务器(解决容量、性能、可靠性等问题) 多台服务器内置大容量硬盘,再装上对象存储软件, 然后再额外搞几台服务作为管理节点,安装上对象存储管理软件。 # gluterfs主要运行场景: 存储大文件,针对小文件或超小文件的支持比较差 KVM镜像 视频文件 # FastDFS主要运行场景: 存放文件size范围:4K~500MB # 对象存储 - GlusterFS、Ceph、FastDFS(非对象存储) 必备技能:DRBD/NFS/MooseFS/ GlusterFS/ FastDFS/TFS(http://tfs.taobao.org/)/ # 访问客户端:只能专用API访问实现 存放单元文件size范围:4K~500MB(阅读、声音、视频网站) # 典型用户:      ... ... 

64,663

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧