質問: C++での`配列(固定長)`には以下の2つがあると思いますが、`std::array`の方が確実に便利だと感じます。 そこで完全に`std::array`に移行する際に、`std::array`にデメリットはないのかなと思い、質問させていただきました。 ``` int arr[10]; ``` ``` #include std::array arr; ```
回答: `std::array`はテンプレートを利用した実装なので、組み込み配列型を使用した場合と比べるとコンパイル時間やコードサイズが増大してしまう可能性はあります。 また、コンパイラによる最適化がうまく効かない場合、組み込み配列型よりも実行速度が低下してしまうケースがあるかもしれません。もちろん、逆に`std::array`を使ったほうが高速化されるケースもあると思います(特にサイズの小さい固定長配列全体を、関数に値渡しする場合)。 インライン化できるような場面では、最終的に`std::array`を使った場合も組み込み配列型を使った場合もまったく同じコンパイル結果になると思いますが、コンパイラの実装にも依存します。