首页  >  问答  >  正文

c++ - 既然有了size_t,那么 size_type意义何在?

#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?说的不都是一回事么

伊谢尔伦伊谢尔伦2765 天前604

全部回复(1)我来回复

  • 高洛峰

    高洛峰2017-04-17 12:07:53

    现在玩编程都讲究移植性的问题。
    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>
    

    回复
    0
  • 取消回复