C ++使用size_t vs使用无符号整数示例

时间:2016-04-20 16:53:22

标签: c++

我最近看到一个例子,如下所示:

const size_t NDim = 3;  
double coords[NDim];

我的问题很简单。什么时候使用size_tintunsigned int?在这种特殊情况下,以下内容不等同于上述内容:

const unsigned int NDim = 3;  
double coords[NDim];

2 个答案:

答案 0 :(得分:2)

size_t通常用于数组索引和循环计数 根据{{​​3}}:

  

使用其他类型(例如unsigned int)进行数组索引的程序可能会失败,例如当索引超过UINT_MAX或依赖于32位模运算时,64位系统。

它还声明:

  

std :: size_t可以存储理论上可能的最大大小   任何类型的对象(包括数组)。一种大小不可能的类型   由std :: size_t表示的格式不正确(自C ++ 14起)

答案 1 :(得分:0)

答案也很简单。您使用size_t来满足所有数组索引和大小调整的需求,这正是它的设计目标。你永远不会用它来做任何其他事情。

除了作为自我记录功能外,它还有另一个重要方面 - 在许多平台上sizeof(int)不等于sizeof(size_t)