在C++中,數組索引的默認大小是64位的大小字符大多數x86-64平臺上的64位整數無符號大小寫。我正在爲我的高性能計算庫構建自己的std :: vector類(其中一個主要原因是我希望此類能夠獲取指針的所有權,而某些std :: vector不提供)。對於數組索引的類型,我想無論是使用:數組索引的類型:有符號/無符號整數優點
- 的size_t
- 我自己index_t這將是一個簽署 int或根據我的程序很長的符號int
優點或使用超過一個無符號的一個帶符號的整數衆多,如
for (index_t i = 0; i < v.size() - 1; ++i)
作品像它是supposer至(與UNS無符號整數,當v的大小爲0時,這個循環變得瘋狂)
for (index_t i = v.size() - 1; i >= 0; --i)
工作就像它應該和其他許多優點。在性能方面,它甚至似乎是一個更好一點的
a + 1 < b + 1
可以降低到一個< b相符號整數(溢出是不確定的),而不是在無符號整數的情況。唯一的優點表現就是,a/= 2可以減少到無符號整數的移位操作,但是不帶有符號的整數。
我想知道爲什麼C++委員會決定使用unsigned整數size_t,因爲它似乎引入了很多痛苦和只有很少的優點。
其他比你想象的,無符號類型倒計時指數當工作完全在做算術時,也。如果你在範圍內思考,這個結果會非常好,'我
2014-10-30 12:15:23
@Gustedt:感謝有趣的鏈接。我試圖將主題放在事實而不是意見上。有些人幫助我考慮使用ptrdiff_t,這很有用。 – InsideLoop 2014-10-30 19:28:29