C ++標準ライブラリでは、多くのアルゴリズムが引数begin()
としてend()
イテレータを取ります。ただし、トリックは、end()
イテレータがコンテナの終了後にあることです。標準のc配列にアルゴリズムを適用する場合は、と同等のポインターを渡す必要がbegin()
あります。end()
質問は次のとおりです。
const unsigned int size = 10;
int array[size];
std::iota(&array[0], &array[size], 0); // <- Version 1
std::iota(&array[0], &array[0]+size, 0); // <- Version 2
2つのバージョンは厳密に同等ですか?C ++標準に従ってバージョン1を問題なく使用できますか?
&array[size]
私の疑問は、配列の終わりの後に要素にアクセスしてからアドレスを取得するのに対し、配列の終わりの後に要素にアクセスしないという事実から来て&array[0]+size
います。