2011-01-31 7 views
37

このC++ステートメントは何を意味していますか?ベクトル<int> :: size_type in C++

vector<int>::size_type x; 

そして、ここではスコープオペレータ::の使用は何ですか?言い換えれば、私たちはこの声明をどのように英語で読むのですか?

たとえば、X::x(){...}の場合、は、member functionclass Xであると言います。

答えて

52

size_typeは、タイプvector<int>の(静的)メンバータイプです。通常はstd::size_tの場合はtypedefであり、それ自体はunsigned intまたはunsigned long longの場合通常typedefです。

+7

「通常」の例外は何ですか?それは珍しい時でしょうか? – ibrahim5253

+1

"通常"は、標準では指定されていないが、これは一般的な実装が選択したものです。実際、私は「例外」を知っています。 Linux glibcは、x86_64プラットフォームで 'size_t'に' unsigned long'を使用しています。 – proski

3

ベクターはそうintとテンプレートvectorタイプsize_typeと呼ばれる部材typedefを有するテンプレート

あります。 xは、そのタイプの変数として定義されます。

18

私はそれを "ベクトルの大きさを保持するのに適した型の変数として宣言する"と読んでいます。ベクターは、その長さに対して独自のタイプを定義しています。可能であれば、「推測」ではなく、他の方法で直接行う必要がある場合と同じように、常にintunsigned intlongunsigned longまたはsize_tなどを直接使用するのが最もクリーンです。

+1

この部分には「ベクトル」を含める必要がありますか?ベクトルがそれ自身のために定義する 'size_type'として' x'をどのように定義できますか?ありがとう – Simplicity

+3

@ user588855:はい、フルネームを使用する必要があります。ベクトルは特殊なテンプレートであり、そのsize_typeは例えば次のものとは異なる可能性があります。ベクトル :: size_type。 – unwind

+1

ベクトル :: size_type'の場合、サイズは 'int'ではありませんか?この場合、 'size_type'が違うかもしれないと言ったら、それはどういう意味ですか?ありがとう – Simplicity

関連する問題