【c/c++】size_t和size_type的差别
2016-01-12 15:05
417 查看
size_type
由string类类型和vector类类型定义的类型,用以保存任意string对象或vector对象的长度,标准库类型将size_type定义为unsigned类型
string抽象意义是字符串, size()的抽象意义是字符串的尺寸, string::size_type抽象意义是尺寸单位类型
string::size_type它在不同的机器上,长度是可以不同的,并非固定的长度。但只要你使用了这个类型,就使得你的程序适合这个机器。与实际机器匹配。
size_t
size_t是为了方便系统之间的移植而定义的。(它就是一个无符号整型,有木有!!!)
在32位系统上定义为 unsigned int
在64位系统上定义为 unsigned long
更准确的说法是在32位系统上是32位无符号整型
在64位系统上是64位无符号整型
size_t一般用来表示一种计数,比如有多少东西被拷贝等。
sizeof操作符的结果类型是size_t,
该类型保证能容纳实现所建立的最大对象的字节大小。
它的意义大致是"适于计量内存中可容纳的数据项目的个数的无符号整数类型"。
所以,它在数组下标和内存管理函数之类的地方广泛使用
为了使自己的程序有很好的移植性,c++程序员应该尽量使用size_t和size_type而不是int, unsigned
stackover解释:
The standard containers define size_type as a typedef to Allocator::size_type (Allocator is a template parameter), which for std::allocator
is defined to be size_t.
So for the standard case, they are the same.
However, if you use a custom allocator a different underlying type could be used.
So container::size_type is preferable for maximum portability.(可移植性)
由string类类型和vector类类型定义的类型,用以保存任意string对象或vector对象的长度,标准库类型将size_type定义为unsigned类型
string抽象意义是字符串, size()的抽象意义是字符串的尺寸, string::size_type抽象意义是尺寸单位类型
string::size_type它在不同的机器上,长度是可以不同的,并非固定的长度。但只要你使用了这个类型,就使得你的程序适合这个机器。与实际机器匹配。
size_t
size_t是为了方便系统之间的移植而定义的。(它就是一个无符号整型,有木有!!!)
在32位系统上定义为 unsigned int
在64位系统上定义为 unsigned long
更准确的说法是在32位系统上是32位无符号整型
在64位系统上是64位无符号整型
size_t一般用来表示一种计数,比如有多少东西被拷贝等。
sizeof操作符的结果类型是size_t,
该类型保证能容纳实现所建立的最大对象的字节大小。
它的意义大致是"适于计量内存中可容纳的数据项目的个数的无符号整数类型"。
所以,它在数组下标和内存管理函数之类的地方广泛使用
为了使自己的程序有很好的移植性,c++程序员应该尽量使用size_t和size_type而不是int, unsigned
stackover解释:
The standard containers define size_type as a typedef to Allocator::size_type (Allocator is a template parameter), which for std::allocator
is defined to be size_t.
So for the standard case, they are the same.
However, if you use a custom allocator a different underlying type could be used.
So container::size_type is preferable for maximum portability.(可移植性)
相关文章推荐
- logger(一):C++ & logger模块配置及开发
- 学习制作dll文件,并在MFC项目内调用
- C++11内存模型
- 【HDOJ】1699 The comment in cpp
- C++类四个默认函数---构造函数、析构函数、拷贝函数、赋值函数
- Delete characters删除两个字符串中相同的字符
- 多个类的DLL封装及调用
- 使用Lex将C/C++文件输出为HTML文件
- 转载_认识C语言的32个关键字
- java调用C++的过程?
- C语言-流程控制语句
- C语言-开发工具
- C语言-结构体与联合体
- C语言-基本数据类型
- C语言-函数
- C语言-标准库
- C语言-变量与常量
- C语言-编译与链接
- C语言-WIN32线程
- C语言-WIN32文件