在size_t和unsigned int之间绘制线的位置?

Jar*_*koL 16 c c++ conventions

我目前正在将我的代码库中的一些用法转换unsigned intsize_t我多年来一直在开发的代码库.我理解两者之间的区别,例如unsigned int,指针可能是32位,size_t可能是64位.我的问题更多的是关于我应该使用哪一个以及人们用来在两者之间进行选择的约定.

很明显,内存分配应该取size_t而不是unsigned int作为参数,或者容器类应该size_t像STL一样用于大小和索引.这些是在阅读size_tvs 的好处时提到的常见案例unsigned int.但是,在进行代码库转换的过程中,我偶然发现了灰色区域中的不少情况,我不确定使用哪种情况.例如,如果4x4矩阵行/列索引应该是size_t一致的,无论索引是否在范围[0,3]中,或者屏幕/纹理分辨率应该使用size_t尽管在几千的范围内,或者一般如果合理的数量为对象应该在数十个范围内,我仍然应该使用它size_t来保持一致性.

你用什么样的编码约定来unsigned int和之间进行选择size_t?表示大小(字节或对象)或索引的所有内容是否始终size_t与合理预期的范围无关?是否有一些被广泛接受的size_t惯例用于完善的图书馆,我可以遵循?

Dre*_*ann 9

我觉得这很简单,虽然我欢迎吊索和箭头.

size_t如果它描述了具有大小的东西,则应该使用它.(伯爵.很多事情)

  • 就个人而言,我认为*"它不能为负"*是使变量无符号的充分理由.因为即使是不应该具有负值的变量也经常涉及需要考虑负数的计算. (3认同)
  • @DrewDormann:我认为你会发现许多标准人都是一致的,并且看到标准库中无符号值的普遍存在是一个错误,但现在很难纠正它.他们在一次会议的小组讨论中谈论它(我相信这是微软的Going Native.我会试着找到它),并且他们在大多数情况下都是一致的.我记得Chandler Carruth和Bjarne Stroustrup专门谈论它. (2认同)