サイズが不明な std::array を関数に渡す
C では、std を受け入れる関数を作成するにはどうすればよいですか。 :array の型はわかっていますが、サイズは不明ですか?
次の例を考えてみましょう:
<code class="cpp">void mulArray(std::array<int, ?>& arr, const int multiplier) { for(auto& e : arr) { e *= multiplier; } }</code>
この関数を使用すると、さまざまなサイズの std::array を作成して、それらを渡すことができます。 mulArray:
<code class="cpp">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::vector などの代替コンテナを使用しない操作。
関数テンプレート ソリューション
任意のサイズの std::arrays を処理できる汎用関数を作成するには、関数テンプレートを使用する必要があります:
<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/Y932XW)
でご覧いただけます。以上が不明なサイズの std::array を C の関数に渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。