string::size_type类型跟int类型有什么区别呢?

一朵浪花一神化 2009-07-18 01:28:40
如下代码:
for(string::size_type ix=0; ix!=str.size(); ix++)
我改成:
for(int ix=0; ix!=str.size(); ix++)
他们之间有什么区别呀,请各位大哥能给小弟解释下吗?


谢了```
...全文
313 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljt3969636 2009-07-18
  • 打赏
  • 举报
回复
我觉得知道是正整数unsigned的就足够了,总之可以足够大不可以无限大,"一定范围"内能赋值给int long ..整数型
yangyunzhao 2009-07-18
  • 打赏
  • 举报
回复 1
string::size_type可以跨平台啊。他在每个平台上表现都一样,但是int型不确定。
windsting 2009-07-18
  • 打赏
  • 举报
回复
[Quote=引用楼主 yjfhv214 的回复:]
如下代码:
for(string::size_type ix=0; ix!=str.size(); ix++)
我改成:
for(int ix=0; ix!=str.size(); ix++)
他们之间有什么区别呀,请各位大哥能给小弟解释下吗?
[/Quote]

string::size_type 一般是 unsigned int,抛开前面大家说的不谈,
如果你的一个string里面的元素数量超过了该系统上的 INT_MAX(32位系统是 2147483647 ),
用后一种写法,当访问到第 2147483647 个元素的时候就会出问题,也可能不出问题,
具体情况你可以试试看。
lwlchristy 2009-07-18
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 crazy_hand 的回复:]
这个应该是根据系统 size_type的,假如你现在的size_type unsigned,那么以后系统能够支持更大的数里,只要改下 typedef 这一句就够,如果你直接用int  你就需要把每一个用于迭代器的int 全都改一遍。
---
其实,就是方便维护,让语言变成的更抽象,不受任何的硬性限制。。
就像c++里面的容器,算法,全都是用基本语法抽象出来的(当然少不了函数模板  typedef 的功劳)
---
想想C++的容器,为什么可以让你指定容器的类型,而且多么复杂都可以。
--
这就是抽象的力量!!
[/Quote]
这个不错!是的,开始很多我也不明白为什么要用size_t,但看多了后面容器等就明白了!这应该也算是C++对C的一种改进吧!
Crazy_hand 2009-07-18
  • 打赏
  • 举报
回复
这个应该是根据系统 size_type的,假如你现在的size_type unsigned,那么以后系统能够支持更大的数里,只要改下 typedef 这一句就够,如果你直接用int 你就需要把每一个用于迭代器的int 全都改一遍。
---
其实,就是方便维护,让语言变成的更抽象,不受任何的硬性限制。。
就像c++里面的容器,算法,全都是用基本语法抽象出来的(当然少不了函数模板 typedef 的功劳)
---
想想C++的容器,为什么可以让你指定容器的类型,而且多么复杂都可以。
--
这就是抽象的力量!!
amossavez 2009-07-18
  • 打赏
  • 举报
回复
只是一个typedef,现在时一个unsigned int型,这么做也是为了升级做准备
  • 打赏
  • 举报
回复
int你超过32位的表示范围就会溢出,而string::size_type 则不会有这种问题。
老邓 2009-07-18
  • 打赏
  • 举报
回复
现在是int,可能在将来的将来会变成long long!
老邓 2009-07-18
  • 打赏
  • 举报
回复
string::size_type的主要作用是方便将来升级!
因为相应size的大小由string类内部决定,不需要用户操心了。
用户只管使用就行。
hrlhrl0 2009-07-18
  • 打赏
  • 举报
回复
我也不知道,搜的,string::size_type为unsigned类型

64,682

社区成员

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

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