2011-01-31 3 views
37

Bu C++ deyimiyle kastedilen nedir?vector <int> :: size_type C++ içinde

vector<int>::size_type x; 

Ve, kapsam operatörü burada :: kullanımı nedir? Başka bir deyişle, bu ifadeyi İngilizce olarak nasıl okuyoruz? Örneğin, X::x(){...} için, x()'un class X'un member function olduğunu söylemekteyiz.

cevap

52

size_type, vector<int> türünde (statik) üye türünde türüdür. Genellikle, genellikle typedefunsigned int veya unsigned long long için hangi kendisi std::size_t için typedef olduğunu.

+7

Bu 'genellikle' için istisnalar nelerdir? Yani, sıra dışı olduğunda? – ibrahim5253

+1

"Genellikle", standardın belirtmediği anlamına gelir, ancak popüler uygulamaların yapmayı seçtiği şey budur. Aslında bir "istisna" biliyorum. Linux glibc, x86_64 platformunda "uns_t" için "imzasız uzun" kullanır. – proski

3

vektör yüzden int ile şablon vector tip size_type adlı bir üye typedef olan bir şablon

olduğunu. x, bu tür bir değişken olarak tanımlanır.

18

"Vektörün büyüklüğünü tutmak için uygun bir türde bir değişken olarak x'i bildir" olarak okurdum. Vektör kendi uzunluğu için kendi türünü tanımlar ve mümkün olduğunca "tahmin etme" yerine ve int, unsigned int, long, unsigned long veya size_t vb .'leri doğrudan yapmanız gerekmedikçe kullanmak için her zaman en temizdir.

+1

Bu bölümün vektör 'içermesi gerekli mi? X'i, kendisi için tanımladığı "size_type" olarak nasıl tanımlayabiliriz? Teşekkürler – Simplicity

+3

@ user588855: Evet, tam ad kullanılmalıdır. vektörünün, size_type öğesinden farklı olduğu özelleştirilmiş bir şablon olması mümkündür. :: size_type. – unwind

+1

:: size_type 'vektöründe, boyut bir "int" değil mi? "size_type" ifadesinin bu durumda farklı olabileceğini söylediğinde, bununla ne demek istiyorsun? Teşekkürler – Simplicity