(1)size_t VS unsigned int
size_t
的自适应特性:size_t
是一种无符号整数类型,它的宽度会根据不同的平台进行自适应调整。在 32 位系统上,size_t
通常是 32 位的无符号整数;而在 64 位系统上,size_t
通常是 64 位的无符号整数。这种自适应特性使得 size_t
能够正确地表示对象的大小或数组的长度,无论在何种平台上都能保证有足够的宽度来容纳所需的值。
unsigned int
的宽度是固定的,在不同的平台上可能是 16 位、32 位或其他宽度。如果使用 unsigned int
来表示对象的大小,在 64 位系统上可能会出现溢出问题,因为 64 位系统可以处理更大的内存地址空间和对象大小。
标准库的约定:在 C++ 标准库中,许多与内存分配、数组操作等相关的函数和接口都使用 size_t
来表示对象的大小或数组的长度。例如,sizeof
运算符返回的就是 size_t
类型的值,std::vector
等容器类的 size()
成员函数也返回 size_t
类型的值。
使用 size_t
可以使代码与标准库保持一致,提高代码的可读性和可维护性。当其他开发人员阅读代码时,看到 size_t
就知道它表示的是对象的大小或数组的长度,而不会产生混淆。
(2)void*
void*
是一种特殊的指针类型,被称为 “无类型指针” 或 “通用指针”。
C 语言中 void* 详解及应用 | 菜鸟教程
(3)[&]()
是一个 lambda 表达式,用于定义线程要执行的任务。[&]
表示以引用的方式捕获外部作用域的所有变量,使得 lambda 表达式内部可以访问和修改外部的变量.