作为初学者,我对size_t
感到很困惑。我可以使用int
,float
或其他类型。为什么还要声明size_t
类型。我没有感受到它的优点。
我查看了一些pages,但我仍然无法理解。
答案 0 :(得分:19)
它的主要优点是它适合这项工作。
size_t
字面定义为足以表示平台上任何对象的大小。其他人不是。因此,当您想要存储对象的大小时,为什么要使用其他任何东西?
如果您愿意,可以使用int
,但是您会故意选择导致错误的劣等选项。我不太明白你为什么要这样做,但是嘿,这是你的代码。
如果您选择使用float
,请告诉我们您正在撰写的计划,以便我们可以避免。 :)
答案 1 :(得分:4)
使用float
会很糟糕,因为这会滥用浮点类型,加上类型提升会意味着任何东西的大小都会以浮点形式发生!
使用int
也会很糟糕,因为int
的细节是由C ++标准故意松散定义的。 (它可能小到16位)。
但是size_t
类型可以保证充分代表几乎任何东西的大小,并且当然 C ++标准库中容器的大小。其具体细节取决于特定的平台和架构。它是无符号类型这一事实引起了很多争议。 (我个人认为将它unsigned
弄错是因为它可能会使用关系运算符搞乱代码并引入难以发现的恶意错误。
答案 2 :(得分:0)
无论何时你想存储类或结构的大小,或者处理原始内存(例如存储原始内存的大小或用作原始数组的索引),我都建议你使用size_t。但是,对于标准容器(例如std :: vector)的索引/迭代,我建议使用给定容器的基础大小类型(例如vector :: size_type)。