Articles

配列インデックスout of bounds-C++Forum

ベクトルには多くの良いものがあります。
しかし、c++配列は、標準の強制コンパイルを使用する場合、コンパイル時に既知のサイズを持つ必要があります(変数にすることはできません。enum、const int、)あなたは常にあなたの配列のサイズを知っているべきであり、このためにそれを境界外に実行することはありません。 したがって、一般的にベクトルを優先する必要がありますが、配列を持つコードを継承したり、コンパイルなどでCファイルを処理したりする必要があ 通常、サイズは、ループするときに安全に保つために使用できる名前を持つenumまたはconstです。 何らかの理由で配列を使用する場合は、このアイデアを使用すると、ほとんどの範囲外の問題を回避できます。 他の問題は、ベクトルでも発生する可能性があります-インデックスを計算してそれをつまんだものですが、ベクトルはこれをチェックするツールを提供しますが、配列にはバグを処理するためのオプションが少なくなります。
c++は高性能言語です。 それは一般的に舞台裏で不必要な作業をしません、あなたがそれをしたいならそれをしなければなりません。 したがって、境界チェックが必要な場合は、そのためのコードが必要です。 ところで、ベクトルの範囲外にも行くことができます。
ベクトル<int>duh={1,2,3};
cout<<duh;//範囲外です。 クラッシュ、最も可能性が高い。
そのベクトルは境界をチェックしているわけではなく、あなたが混乱したときに”より安全”です。 それはそれ自身の管理されたサイズ変数を持っているので、あなたがあなたのコードを慎重に書いているならば、台無しにするのは難しいはずです。