代码之家  ›  专栏  ›  技术社区  ›  Frank

到处使用std::size\t是一种好的做法吗[[副本]

  •  6
  • Frank  · 技术社区  · 15 年前

    可能重复:
    When to use std::size_t?

    我的代码中有很多常量是无符号数,例如计数器、频率截止值、长度等 std::size_t 所有这些,而不是 int unsigned int

    这样做对吗?我开始使用它是因为STL容器使用它来表示它们的大小,它用于字符串位置等等。

    3 回复  |  直到 8 年前
        1
  •  8
  •   sbi    15 年前

    std::size_t container_type::size_type ,这将 通常 标准::尺寸

    如果您需要用于保存非负积分的类型,而这些类型不用于上述目的,那么 unsigned short , unsigned int ,和 unsigned long ?

        2
  •  3
  •   Radu Chivu    15 年前

    size_t i;
    ...
    char buf[4];
    sprintf(buf,"%u",i);
    

    有时它会运行,但在某些平台/编译器上会出现缓冲区溢出。

    我的观点是,如果必须对大小/类型进行假设,这可能会导致一些讨厌的可移植性问题。

        3
  •  2
  •   Willis Blackburn    15 年前

    对于表示存储在内存中的对象大小的变量,可以使用size\t。但是没有太多的理由把它用于其他任何事情。它的存在主要是因为无符号int的宽度可能不足以表示内存对象的大小(考虑一个具有16位int但有32位地址空间的体系结构。)