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

C++ using size_t vs using an unsigned integer example

本文关键字:无符号整数 C++ size 使用      更新时间:2023-10-16

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

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

我的问题直截了当。什么时候使用size_tintunsigned int?在这种特殊的情况下,下面的不是与上面的等价吗:

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

size_t通常用于数组索引和循环计数
根据cppreference:

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

它还指出:

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

答案也很简单。您可以使用size_t来满足所有的数组索引和大小调整需求,这正是它的设计目的。而且你永远不会用其他东西。

除了是一个自文档功能外,它还有另一个重要方面——在许多平台上,sizeof(int)不等于sizeof(size_t)