負のインデックスを使用してvector
のインデックスを作成しようとしました。 vector::at()
メンバー関数は、指定されたインデックスがベクターの境界内にあるかどうかをチェックし、それが発生しない場合は、out_of_range
例外がスローされます。負のインデックスを持つstd :: vectorをインデックスする
vector<float> array; // sample vector
array.push_back(0.123);
array.push_back(1.234);
array.push_back(2.345);
array.push_back(3.456);
array.push_back(4.567);
int index = -1;
float f = array.at(index);
cout << f << endl;
vector::at()
メンバ関数のシグネチャは、指定されたパラメータがvector<T>::size_type
型であり、このタイプのベクターのためunsigned int
ので、コンパイラはint
から暗黙の変換(index
変数の型)を行うべきであることを必要としますunsigned int
。 index
値は上記の例で-1
あるため、暗黙index
変換(すなわちunsigned int
タイプの最大値である)4294967295
ある:この値は、out_of_range
例外をスローvector::at()
メンバ関数に渡されます。 vector::at()
メンバ関数がindex
がゼロ未満である、むしろ暗黙変換index
はvector
の現在の大きさよりも大きいのでことを認識するのですなわち
は、この例外がスローされていません。これは正しい説明ですか?
はい、基本的に – Dave
はい、それは正しい説明です。 – syam