您的位置:首页 > 编程语言 > C语言/C++

size_type

2017-11-09 23:54 204 查看
size_type是在STL的string类和vector类中定义的类型,用以保存任意string对象或vector对象的长度,size_type的抽象意义是尺寸单位类型。
size_type实质上是无符号整型,但其长度不是固定的,它可以是unsigned int,也可以是unsigned long甚至是unsigned long long。简单来说,size_type足够存放下任何string对象或vector对象的大小,这依机器环境以及编译器的环境不同而不同,这么做是为了增强兼容性和可移植性。
很多程序员不了解string类和vector类,常将size()成员函数返回的size_type赋值给int型变量,这是很严重的错误。试想一下,如果你使用的平台的size_type类型的长度是32位的,正好与int类型匹配,那么你会侥幸通过。但如果放到一台size_type是64位长度的机器中,32位的int就放不下了。另外,由于size_type是无符号整型,因此如果在表达式中混用了带符号数和无符号数将可能产生意想不到的结果。例如,假设n是负值的int型,对一个string对象s,则表达式s.size()
< n 的判断结果几乎肯定是true,因为负值n会自动转换成一个比较大的无符号值。

如果我们想获取自己使用的机器中size_type的最大值,可以通过下面的程序来得到:

#include <iostream>
#include <string>

int main (void)
{
std::cout << std::numeric_limits<std::string::size_type>::max() << std::endl;
return 0;
}

C++的很多库都定义了一些配套类型,通过这些配套类型,类库的使用就可以与机器无关,大大增强了代码的可移植性。size_type就是这样的配套类型。

本文部分内容摘自《C++ Primer(第5版)》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  size_type size_t C++