當我在std::vector<Foo>
(或每個具有隨機訪問迭代器的容器)上循環時,我使用無符號整數變量i
。如果我想尊重規範,我應該使用std::size_t
還是容器本身給出的類型:std::vector<Foo>::size_type
?std :: size_t或std :: vector <Foo> :: size_type?
如果我選擇std::size_t
(可讀性原因),我可以肯定的是,在std
命名空間的每個容器的每一個實現使用std::size_t
爲size_type
?
注:我僅使用C++ 98(出於兼容性原因)。
不,你不能確定。如果您想避免可能的縮小轉換,請使用容器提供的類型。 – StoryTeller
一個有趣的事情是'size_t'可以是'unsigned long'的typedef,'std :: vector :: size_type'可以是64位Linux機器上的'unsigned long long'。兩者都是64位寬,並具有相同的範圍,但它們不是同一類型。 ([example](http://coliru.stacked-crooked.com/a/06c88c51b0cf219b)) – NathanOliver
您可以使用一個模板類,根據是否使用「std :: size_t」和「 'std :: vector :: size_type''具有相同的大小(我現在不能嘗試實現它,但我確定它是可行的)。 –
nefas