std::size_t

定义于头文件 <cstddef>
定义于头文件 <cstdio>
定义于头文件 <cstdlib>
定义于头文件 <cstring>
定义于头文件 <ctime>
typedef /*implementation-defined*/ size_t;

std::size_tsizeof 运算符还有 sizeof... 运算符和 alignof 运算符 (C++11 起)所返回的一种无符号整数类型。

注意

size_t 可以存放下理论上可能存在的对象的最大大小,该对象可以是任何类型,包括数组。大小无法以 std::size_t 表示的类型是病式的。 (C++14 起)在许多平台上(使用分段寻址的系统除外),std::size_t 可以存放下任何非成员的指针,此时可以视作其与 std::uintptr_t 同义。

std::size_t 通常被用于数组索引和循环计数。使用其它类型来进行数组索引操作的程序可能会在某些情况下出错,例如在 64 位系统中使用 unsigned int 进行索引时,如果索引号超过 UINT_MAX 或者依赖于 32 位取模运算的话,程序就会出错。

在对诸如 std::stringstd::vector 等 C++ 容器进行索引操作时,正确的类型是该容器的成员 typedef size_type,而该类型通常被定义为与 std::size_t 相同。

示例

#include <cstddef>
#include <iostream>
 
int main()
{
    const std::size_t N = 10;
    int* a = new int[N];
 
    for (std::size_t n = 0; n < N; ++n)
        a[n] = n;
    for (std::size_t n = N; n-- > 0;) // 对于无符号类型的逆向循环技巧。
        std::cout << a[n] << " ";
 
    delete[] a;
}

输出:

9 8 7 6 5 4 3 2 1 0

参阅

在两个指针相减时返回的有符号整数类型
(typedef)
标准布局类型的成员相对类型起始地址的字符偏移量
(宏函数)
size_tC 文档

版本历史

  • (当前 | 先前 2017年10月11日 (三) 06:13Fruderica讨论 | 贡献 . . (1,970字节) (+238). . (update) (撤销)
  • 当前 | 先前 2013年7月2日 (二) 11:55P12bot讨论 | 贡献 . . (1,732字节) (-79). . (Use {{lc}}. Update links. Various fixes.) (撤销)
  • 当前 | 先前 2012年11月16日 (五) 00:03Timothyqiu讨论 | 贡献 . . (1,811字节) (-12). . (remove machine translation note) (撤销)
  • 当前 | 先前 2012年11月16日 (五) 00:02Timothyqiu讨论 | 贡献. . (1,823字节) (-877). . (人工翻译) (撤销)
  • 当前 | 先前 2012年11月2日 (五) 14:01P12bot讨论 | 贡献 . . (2,700字节) (+193). . (r2.7.3) (机器人添加:de, en, es, fr, it, ja, pt, ru) (撤销)
  • 当前 | 先前 2012年10月27日 (六) 12:44P12讨论 | 贡献 . . (2,507字节) (0). . (1个修订: Translate from the English version) (撤销)
  • 当前 | 先前 2012年10月26日 (五) 06:00TranslationBot讨论 | 贡献. . (2,507字节) (-33). . (Translated from the English version using Google Translate) (撤销)
  • 当前 | 先前 2012年10月26日 (五) 04:09P12讨论 | 贡献 . . (2,540字节) (0). . (1个修订: Translate from the English version) (撤销)
  • 当前 | 先前) 2012年10月25日 (四) 12:00TranslationBot讨论 | 贡献. . (2,540字节) (+2,540). . (Translated from the English version using Google Translate)