Apakah ada perbedaan antara size_t
dancontainer::size_type
?
Apa yang saya pahami size_t
lebih umum dan dapat digunakan untuk size_type
s semua .
Tetapi apakah container::size_type
dioptimalkan untuk jenis wadah tertentu?
c++
size-type
container-data-type
Charles Khunt
sumber
sumber
N1804
dan saya tidak melihat adanya hubungan antaraAllocator::size_type
dansize_type
. Sekilas libstdc ++ tidak menunjukkan sesuatu yang mirip dengan ini juga.size_t
apakah taruhan implementasi praktis dari kendala tersebut. Namun, di C ++ 11, sekarang pada dasarnya didefinisikan sebagai:std::make_unsigned<X::difference_type>::type
secara default. Yang dalam prakteknya, mungkin akan sama atau cocok dengannyasize_t
.size_type
deprecation. Apa yang memberi?size_t
didefinisikan sebagai tipe yang digunakan untuk ukuran sebuah objek dan bergantung pada platform .container::size_type
adalah tipe yang digunakan untuk jumlah elemen dalam penampung dan bergantung pada penampung .Semua
std
penampung digunakansize_t
sebagaisize_type
, tetapi setiap vendor pustaka independen memilih jenis yang menurutnya sesuai untuk penampungnya.Jika Anda melihat qt, Anda akan menemukan bahwa
size_type
kontainer Qt bergantung pada versi. Di Qt3 ituunsigned int
dan di Qt4 itu diubah menjadiint
.sumber
int
bukanssize_t
,int
agak kecil.Karena
std::[w]string
,std::[w]string::size_type
sama denganstd::allocator<T>::size_type
, yang sama denganstd::size_t
. Untuk penampung lain, itu beberapa implementasi yang ditentukan jenis integer tidak bertanda tangan.Kadang-kadang berguna untuk memiliki tipe yang tepat, jadi misalnya seseorang tahu di mana tipe tersebut membungkus (like, to
UINT_MAX
) sehingga dia dapat memanfaatkannya. Atau untuk template, di mana Anda benar-benar perlu meneruskan dua jenis yang identik ke template fungsi / kelas.Seringkali saya menemukan saya menggunakan
size_t
untuk singkatnya atau iterator. Dalam kode generik, karena Anda umumnya tidak tahu dengan contoh kontainer apa template Anda digunakan dan berapa ukuran kontainer itu, Anda harus menggunakanContainer::size_type
typedef jika Anda perlu menyimpan ukuran kontainer.sumber