C++中的易混淆的返回类型
来源:互联网 发布:董小飒淘宝店网址 编辑:程序博客网 时间:2024/05/24 13:28
最近在看标准库时碰到很多容易混淆的知识点:
vector源码实现中:
typedef size_t sizetype ;
typedef ptrdiff_t defference_type ;
就有以上这两句话,在C++ primer也总是看到这几种类型。
1.size_type类型
事实上size_type是一个无符号类型的值。
string::size_type 表示的是标准库中string类型的size()函数返回的的值,表示string对象的大小。
vector::size_type 表示的是标准库中vector容器的size()函数或capacity()函数返回的的值,表示vector对象中元素个数的大小或vector空间大小。
但是为什么不直接返回无符号类型的值呢?那是因为无符号类型的值在不同机器上的大小是不同的。
使用这个类型体现了标准库与机器无关的一个特性。还有其他标准数据库类型定义了配套的类型来解决这个问题。
2.difference_type类型
difference_type类型是与迭代器相关联的一个概念。
它表示指向同一个容器的两个迭代器之间的距离,显然它是一个有符号类型的。
3.size_t类型
size_t类型是在使用数组时碰到的一个类型。在使用数组下标时经常将其定义为size_t类型。size_t类型是一个与机器相关的无符号类型,它被设计得足够大以便能够表示内存中任意对象的大小。size_t类型是在cstddef头文件中定义的,这个文件是C标准库stddef.h头文件的C++语言版本。试想如果在遍历数组时只是定义为long,当数组中的元素远大于long表示的范围,那么确定能够保证便利到所有的数组中的所有元素吗?
sizeof()的返回类型就是size_t类型
4.ptrdiff_t类型
ptrdiff类型就两个指针相减返回的结果类型,ptrdiff_t类型也是在cstddef头文件中定义的一个与机器相关的类型,只是它是一个有符号类型。
5.constexpr类型
const expression的意思,把变量声明此类型由编译器来判断该变量值是否是一个常量表达式。
6.auto类型
让编译器帮助我们去分析表达式属于的类型,并可以使用表达式的值来初始化该变量。
7.decltype类型
返回表达式的类型。
- C++中的易混淆的返回类型
- 在c/c++中的&、|和&&、||的区别(易混淆)
- 几个C语言中的易混淆点
- C/C++中的易混淆名词
- 关于c中&的返回值类型
- C语言中的几个容易混淆的知识点总结
- C语言中的几个容易混淆的知识点总结
- C/C++一些易混淆的知识点
- C语言中的运算符易混淆概念总结
- Javascript中的nodetype 返回类型
- struts2 中的 result 返回类型是 json 的配置问题
- C#中的反射:返回指定类型的字段
- C/C++中main函数的返回值类型
- [跨平台C++] 返回const char* 类型的函数样板
- c/c++中const成员函数的返回值类型
- 返回引用类型的函数指针(c++)
- Objective-C中的布尔类型的用法
- C语言中的变量的存储类型
- ARCGIS 10.1 for Server SOE介绍及开发实例(1)
- SQLServer控制用户访问权限表 (本机访问本地数据库 加密)
- IOS;C1_基本概念_10-15
- 注解 & 类加载器
- Redis源码分析(二)——链表adlist
- C++中的易混淆的返回类型
- leetcode Pow(x,n)
- linux下显示dd命令的进度
- 在linux下搭建libcap开发环境:
- 数据结构
- 安装mysql,问题小计
- CMD启动selenium
- nyoj756重建二叉树
- 如何让你的APK成为开机自启动第一个APK,让它成为你的Launcher吧