私はこのような何か:明らかにC++ 11レンジベースforループはどのように配列サイズを認識しますか?
int my_array[5] = {1, 2, 3, 4, 5};
for (int &x : my_array) {
x *= 2;
}
C++ 11には、私の配列が唯一の5つの要素を持っていることを知っています。この情報はmy_arrayオブジェクトのどこかに格納されていますか?
もしそうなら、それが開発者として私に利用可能にされていない理由がありますか(それは?!?!?)? C++の開発者が常に彼らが扱っている配列の境界を知っていれば、世界の多くの問題が解決されるようです。
OK:
は、ここで例のサイズ機能です。では、my_array.sizeが存在しない理由は何ですか? – MrFox
@suslik:もちろん、配列はクラス型ではないため、メンバ関数を持つことはできません。しかし、必要な値を生成する 'array_size'フリー関数テンプレートを簡単に書くことも、簡単に作成できる[' std :: extent'](http://en.cppreference.com/w/cpp/types/extent )。 –
どのように私はこれについて長いこと知っていない私の人生を生き延びた...私はstd :: vectorを非難します:)。 – MrFox