以下是引用TonyDeng在2013-1-14 13:16:28的发言:
size_type是在类中定义的类型,可以视为define,但其实没那么简单,不过可以简单地这样看。之所以要在类中定义,是因为这个东西需要随着类的实际情况变化而变化,这个计数器可能是极小的数,也可能是极大的数,简单地一个unsigned int可能容纳不下,所以它会随着定义的类的可能性而变化,不过不管它是unsigned int还是unsigned long甚至更大,都必然与unsigned类整数兼容,与零比较是没有问题。
我这样理解不知道对不对:之所以if(s.size()==0)这样的操作正确是因为无符号数字0的特殊位模式造成的,因为不管是考虑大小端还是字节数,无符号的0都是所有位上都是0,所以可以不考虑s.size()的返回值size_type到底是unsigned in 还是unsigned long 或是其他别的什么类型而直接比较,如果将0换成别的数是不可以的
说来惭愧,C++刚学,想自己写段代码来验证这样理解对不对都很难办到,即使有了结果自己也不敢相信是对的。
求指教