ptrdiff_t学习

来源:互联网 发布:八爪鱼采集器mac版 编辑:程序博客网 时间:2024/04/28 21:22

在学习STL源码时遇到了ptrdiff_t

先看下我自己搞得测试ptrdiff_t的代码

#include<iostream>#include<cstddef>#include<vector>using namespace std;int main(){    string s = "hello";    string::iterator sp = s.begin();    string::iterator send = s.end();    ptrdiff_t sl = send - sp ;    vector<int> a(10,10);    cout << sl << endl;//begin()返回的迭代器和end()返回的迭代器距离5    vector<int>::iterator vp = a.begin();    vector<int>::iterator vend = a.end();    ptrdiff_t   vl = vp - vend;    cout<< vl <<endl;//begin()返回的迭代器和end()返回的迭代器距离-10           return 0;  } 

输出是 5 和 -10
输出的ptrdiff_t对象是有符号的整数,并且它代表的是两个迭代器(指针)之间的距离。这个距离是内存单元之间的距离并且是有方向的。

我也看了看源码并截取的部分

#define __PTRDIFF_TYPE__ long long int#else#define __PTRDIFF_TYPE__ long int#endif#endif#ifndef _PTRDIFF_T_DEFINED#define _PTRDIFF_T_DEFINED__MINGW_EXTENSION typedef __PTRDIFF_TYPE__ ptrdiff_t;#endif

我的理解是 ptrdiff_t就是long long int 或 long int 型

0 0
原创粉丝点击