size_t与size_type有什么区别

shore1111 2008-05-03 09:58:37
如题,刚接触这一方面不是很清楚,还望明白人赐教~~
...全文
6659 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)

64,701

社区成员

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

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