您的位置:首页 > 其它

size_type,size_t和ptrdiff_t

2017-05-25 20:33 197 查看
为了使自己的程序有很好的移植性,c++程序员应该尽量使用size_t和size_type而不是int, unsigned int.

1.size_type

由string类类型和vector类类型定义的类型,用以保存任意string对象或vector对象的长度,STL中将size_type定义为unsigned (unsigned int 或 unsigned long)类型。不同机器环境长度可能不同,win32和win64上长度差别。使用的时候必须要指出类型在哪里定义的,如下所示:

string::size_type   a=123;
vector<int>::size_type b=234;//注意:vector类型总是包括vector的元素类型,如vector::size_type b=234是不正确的!


2.size_t
size_t是为了方便系统之间移植而定义的,它是一个unsigned整型,在32位系统上定义为unsigned int;在64位系统上定义为unsigned long。size_t使用的时候需要头文件<cstddef>;而size_type使用时需要<string>或者<vector>。size_type是容器概念,没有容器不能使用;而size_t不是容器概念。

3.ptrdiff_t

与size_t类型一样,ptrdiff_t也是一种与机器相关的类型,在cstddef头文件中定义,size_t是unsigned整型,而ptrdiff_t是signed整型。这两种类型的差别体现了它们各自的用途:size_t 类型用于指明数组长度,它必须是一个正数;ptrdiff_t 类型则应保证足以存放同一数组中两个指针之间的差距,它有可能是负数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: