私はC++を学んでいるだけで、Accelerated C++を使用しています。なぜ彼は "int"を使用する代わりに "typedef vector <double> :: size_type"を使用しましたか
ベクターの例では、ライターは次のコードを使用しました。
typedef vector<double>::size_type vec_sz;
vec_sz size = homework.size;
私は彼がvector<double>::size_type size = homework.size;
として、次のコマンドを記述する必要はありませんが、私の質問は、なぜ彼はだけではなく、整数としてsize
を宣言していないされるようにtypedef vector<double>::size_type vec_sz;
がある知っていますか?
int size = homework.size;
これはベクターを使用しているためですか?
もしそうなら、それはベクトルイテレータによって返される値を通常の変数に格納できないということですか?
ここにあなたの質問があります: 'ベクトル :: size_type'の背後にあるタイプは何ですか? –
簡単な答えは、作者が 'size_t'を使う可能性があり、それはおそらく' int 'と同じ* not *であることです(通常は 'unsigned int'または' unsigned long'と同じです。それのunsignednessは大いに重要であり、サイズの違いはあなたがやっていることに依存することもできます)。長い答えは、実際の回答ボックスであっても非常に長いです。 _good_ C++の本は実際に 'int'と' container_type'と 'container_type'との間の取引について説明していますが、そうではないようです。 – zwol
ポイントは、 'std :: vector :: size_type'の後ろにどんな型があるのか正確には分かりませんが、どんな型であれ、それを宣言する簡単な方法が欲しいです。その 'int' btwであることはありそうもありません。我々はそれが*ベクトル*の要素の最大数に対処するのに十分大きい数を保持できる型であることを知っています。 –
Galik