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上长度差别。使用的时候必须要指出类型在哪里定义的,如下所示:
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 类型则应保证足以存放同一数组中两个指针之间的差距,它有可能是负数。
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 类型则应保证足以存放同一数组中两个指针之间的差距,它有可能是负数。
相关文章推荐
- 关于size_t, ptrdiff_t, size_type, difference_type
- size_type、size_t、differentce_type以及ptrdiff_t
- size_type、size_t、different_type以及ptrdiff_t
- 关于size_t, ptrdiff_t, size_type, difference_type
- size_t,size_type,ptrdiff_t的区别
- size_type、size_t、different_type以及ptrdiff_t
- size_t, ptrdiff_t, size_type, difference_type
- size_type、size_t、differentce_type以及ptrdiff_t
- 关于size_t, ptrdiff_t, size_type, difference_type
- 关于size_t, ptrdiff_t, size_type, difference_type
- size_type、size_t、different_type以及ptrdiff_t
- size_type、size_t、different_type以及ptrdiff_t
- STL__size_t, ptrdiff_t, size_type, difference_type
- size_type、size_t、different_type以及ptrdiff_t
- 关于size_t, ptrdiff_t, size_type, difference_type
- 关于size_t, ptrdiff_t, size_type, difference_type
- size_type、size_t、different_type以及ptrdiff_t
- 关于string::size_type
- Parameter 'p_REMARK': No size set for variable length data type: String.
- size_type vs size_t