size_type:string、vector的size()函数返回类型

11 篇文章 0 订阅
  • size_type定义为与 unsigned 型(unsignedint 或 unsigned long)具有相同的含义,而且可以保证足够大能够存储任意 string 对象的长度。
  •  对于任意一种给定的数据类型, 它的 unsigned 型所能表示的最大正数值比对应的 signed 型要大倍,表明 size_type 存储的 string 长度是 int 所能存储的两倍。
  • 假设n是一个具有负值的int,则表达式s.size() < n的判断结果几乎肯定是true。这是因为负值n会自动地转换成一个比较大的无符号值。如果一条表达式中有了size()函数就不要再使用int了,这样可以避免混用int和unsigned可能带来的问题。

虽然很多地方在说不要把size()的返回值赋值给int型变量,但是还是看到很多代码中直接for(int i=0;i<s.size();i++)这么用,估计是笃定了 i 不会出现负值。

但是自己编程的时候出现了错误:

1、带符号数与size_type类型比较

int i=-1;
	if(i<S.size())
		cout<<1<<endl;
	else
		cout<<0<<endl;

输出的是0,原因就是负数变成了较大的无符号值。

但是事先将S.size()赋值给int变量就运行通过:

int lens=S.size(); 

——不过感觉这里如果S.size()太大,超过int的最大值范围应该还是会出错

总结:

1、字符串长度较小,且有和带符号int混用的需求,则可以赋值给int或 long int等

2、字符串长度大,且所用变量不会出现负值,则直接用size_type类型变量

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值