サイズが不明な std::array を関数に渡す
問題:
既知の型で可変サイズの std::array を操作する関数を作成するにはどうすればよいですか?
例:
<code class="cpp">// hypothetical example void mulArray(std::array<int, ?>& arr, const int multiplier) { for(auto& e : arr) { e *= multiplier; } }</code>
<code class="cpp">// imaginary arrays with values std::array<int, 17> arr1; std::array<int, 6> arr2; std::array<int, 95> arr3; mulArray(arr1, 3); mulArray(arr2, 5); mulArray(arr3, 2);</code>
質問:
C スタイルの配列と同様に、これを機能させる簡単なアプローチはありますか?
答え:
残念ながら、いいえ。 サイズが不明な std::array を渡すには、関数テンプレートまたは std::vectors などの代替コンテナを使用する必要があります。
テンプレート ソリューション:
<code class="cpp">template<std::size_t SIZE> void mulArray(std::array<int, SIZE>& arr, const int multiplier) { for(auto& e : arr) { e *= multiplier; } }</code>
実際の例: https://godbolt.org/z/T1d1n3vrM
以上が関数内で可変サイズの std::array を処理する方法: 簡単なアプローチ?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。