我最近看到一个例子,如下所示:
const size_t NDim = 3;
double coords[NDim];
我的问题很简单。什么时候使用size_t
与int
或unsigned int
?在这种特殊情况下,以下内容不等同于上述内容:
const unsigned int NDim = 3;
double coords[NDim];
答案 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)
。