std::array
C のレルムでは、 std::array
次のコード スニペットを考えてみましょう。
<code class="cpp">template<typename T, int N> void f(T value) { std::array<T, N> items = {value, value, value, value, value}; }</code>
単純ではありますが、手動で値を繰り返すのは面倒になります。 Nが増加します。この問題に対処するための、よりエレガントなアプローチは、C 17 の構造化バインディングと可変個引数テンプレートを活用することです。
シーケンス ジェネレーターと繰り返し関数の利用
このエレガントなアプローチの鍵は解決策は、シーケンス型 seq を生成することにあります。 genseq_t<> を使用するジェネレータ。このシーケンス タイプを使用すると、値と生成されたシーケンスをパラメータとして受け取り、std::array
実装例
<code class="cpp">template<typename T, int N> void f(T value) { // genseq_t<N> represents seq<0,1,...N-1> std::array<T, N> items = repeat(value, genseq_t<N>{}); }</code>
パターンの詳細
この手法により、std::array
以上がC でデフォルト以外の構築可能な型を使用して `std::array` をエレガントに初期化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。