首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于size_t与size_type的一些疑问?该如何解决

2012-03-31 
关于size_t与size_type的一些疑问?size_type与机器无关,可否举例说明怎么无关。size_t与机器相关,可否举例

关于size_t与size_type的一些疑问?
size_type与机器无关,可否举例说明怎么无关。
size_t 与机器相关,可否举例说明怎么相关。
两者可否相互赋值,如果可以,请说明原因,如果不可以,又为什么。

比如这样:
vector<int> vec(10);
vector<int>::size_type vec_size = vec.size();
我可否用vec_size这样说明数组大小

int *pia = new int[vec_size];

之所以这么问是因为书上有这么段话,
vector使用vector::size_type作为下标的类型,而数组下标的正确类型则是:size_t




[解决办法]
本质上都是unsigned整型值(比如int, long,long long)。正如你问题中所列出的那样,size_type与机器无关,而size_t与机器有关。

比如在16bit的机器上,size_t就是一个16位的无符号整数,而size_type就可能是一个32bit的无符号整数。
[解决办法]
使用size_type总是正确的。
[解决办法]
无论在什么机器上,使用什么编译器,只要用STL里面的size_type,就OK
[解决办法]
size_t是表示指针的,与多少位操作系统有关,假如操作系统是32位,size_t就是无符号32位的,假如操作系统是64位的,size_t就是无符号64位的。
size_type表示容器长度,与操作系统有关,不用的操作系统可以一样,可以不一样,仅用于表示容器,被定义在STL中。
[解决办法]
如果使用STL,则使用size_type,否则使用size_t。

热点排行
Bad Request.