#include <vector> #include <string> using namespace std; int main() { vector<int>::size_type a; vector<double>::size_type b; string::size_type c; }
我在vs2015内把鼠标指针分别指向a,b,c,都是显示为size_t类型,那么既然有了size_t,为何还要size_type呢,而且还分别有这么多作用域下的size_type?说的不都是一回事么
小伙看你根骨奇佳,潜力无限,来学PHP伐。
现在玩编程都讲究移植性的问题。size_t在32位和64位系统上是不一样的,size_t是方便系统之间的方便移植。只能用一句话,使用size_type永远是正确的。
typedef size_t size_type;
是不是觉得没区别?size_type是配套类型(STL类中定义的),其实他就是一个unsigned int型的,说来说去只是为了string类和vector类对象的长度的一个存储而存在的。
sizeof(vector<int>::size_type) sizeof(string::size_type) sizeof(size_t)
你可以试试sizeof的结果。
再来看看include
size_t定义:
#include <cstddef>
size_type定义:
#include <vector> //或 #include <string>
现在玩编程都讲究移植性的问题。
size_t在32位和64位系统上是不一样的,size_t是方便系统之间的方便移植。
只能用一句话,使用size_type永远是正确的。
是不是觉得没区别?
size_type是配套类型(STL类中定义的),其实他就是一个unsigned int型的,说来说去只是为了string类和vector类对象的长度的一个存储而存在的。
你可以试试sizeof的结果。
再来看看include
size_t定义:
size_type定义: