問題タブ [stdarray]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 「アンパック」 std::array関数の引数として
これは、関数の引数としてタプルを展開 (または「展開」) する方法の非常に優れた (私のものではない) 例です。
次に、これを次のように使用できます。
std::array
タプルにとても似ているので、どうやって同じことをすることができるかをさまよっていました。std::get<N>
で動作するstd::array
ので、このソリューションを変更するのは簡単だと思いました。しかし、このようなものは機能しません:
パーツの為お譲り致しstd::result_of<FT(Arg&&)>::type
ます。引数の型Arg&&
が間違ってresult_of
いて、フィールドがありませんtype
。タプルArgs&&...
が拡張されましたが、今では「繰り返される」必要がありますI
。result_of
返された型を差し引くことができるようにこれを行う方法はありますか?
また、「アンパック」するツールがあり、tuple
再帰的に(おそらく を使用して)構造などarray
を「アンパック」することは可能でしょうか?とが枝で、他の種類が葉であるある種の木?enable_if
tuple<array<int, 2>, tuple<array<double,3>, ...
tuple
array
c++ - std::accumulate の無効な変換
静的関数 (フィールドごとの最小フィールド)を使用してN
次元内の点を表すクラスがあります。min
私が書くとき、すべてがうまくいきます
しかしstd::accumulate
、配列で使用しようとすると
エラーが発生します:
std::accumulate
これは、実装が私のコンストラクターと互換性がないという問題ですか?
c++ - std::サイズがゼロの配列
std::array<int,0>
サイズがゼロの配列を持つとはどういう意味ですか?
これを投稿する前に SO で同様の質問をしましたが、これらの質問はすべて単純な配列型と C 言語に関するものであり、ほとんどが違法であると述べています。ただし、C++ ではarray<int,0>
許可されています。
cppreference.comによると
長さゼロの配列 (N == 0) には特殊なケースがあります。その場合、
array.begin() == array.end()
これは一意の値です。サイズがゼロの配列に対するfront()
orの呼び出しの効果は未定義です。back()
なぜ違法と定義されないのですか?
c++ - C++11 配列の初期化でコピー コンストラクターが呼び出されない
サイズに合わせてテンプレート化された配列を使用する小さなクラスを作成しています。ここにいくつかのコードがあります...
.hpp
.cc
combo{sequence}
コンストラクタのメンバ初期化では、型しか受け付けないのでイニシャライザとして使えませんsf::Keyboard::Key
。を要求している場合、これは理にかなっていますinitializer_list
が、これは奇妙に思えます。他の標準コンテナーでは、{} 表記を使用してコピー コンストラクターを呼び出すことができます。これはとの癖std::array
ですか?それとも私のclangのバグですか?
念のため、私のclangバージョンは次のとおりです。
c++ - 2d std::array を関数 c++ に渡す
コンストラクター クラスに 2 次元配列を渡そうとしています。
私はいくつかの検索を行い、テンプレートを使用しようとしました..しかし、動作しません
しかし、私のコードは次のエラーを生成します:
メインのコード:
そしてここにコンストラクタのコード:
c++ - ベクトルを変換/再解釈する効率的な方法ベクトルとして>
vector<array<T, N>>&
を返す別のメソッドの結果を受け取るメソッド(テンプレート)を呼び出したいvector<T>
vector<T>
a を aとして再解釈する効率的な (O(1)) 方法はありvector<array<T,1>>
ますか? それは可能ですか/それに対して安全reinterpret_cast
ですか?
arrays - 循環バッファ内の要素をリセットする
C++ で未指定の型を取る循環バッファーを実装するように依頼されました。ジェネリック型はプリミティブ型であると想定しています。(または、非プリミティブ型を考慮する必要がありますか?) バッファーの場合、基本的な配列を使用しています。たとえば、T[]とnewおよびdeleteを使用して、初期化と破棄を行います。
バッファ クラスを実装し、予想される出力で整数に対してテストしました。しかし、それは動作しませんstd::string
。問題は、バッファーをポップするときに要素をゼロに設定してクリアすると、コンパイラーがそうすることがあいまいであると不平を言うことです。そのため、要素をクリアするための一般的な方法が必要であり、std::array
この機能がサポートされている可能性があると考えていましたが、ドキュメントで見つけることができません。
std::array または基本配列の要素をクリアする一般的な方法はありますか、それとも std::allocator が私の唯一のオプションですか? または、完全に間違った方向に進んでいる場合、 pop メソッドを実装して最初の要素をリセットし、フロント インデックスを次の要素のインデックスにインクリメントする方法を教えてください。
前もって感謝します!
それが役立つ場合、以下は私の関連コードです:
c++ - std::array の std::array へのインデックス付け
C++ での配列の配列のインデックス付けについて、いくつかの混乱があります。
私は持っている:
インデックス作成を行うときは、次のことを前提としています。
したがって、最初にouter_index
配列に入り、SIZE_OUTER
次に内部インデックスが続きます。
本当?