問題タブ [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++ - 複雑なデータ構造 (ベクトルの配列の配列の配列) を使用するとメモリ リークが発生する
次のように定義された複雑なデータ構造があります。
ここで、arrayとvectorはand の略std::array
でstd::vector
、n_ports と n_times はunsigned int
s andarc
ですstruct
:
基本的に、トリプル (i,j,k) に0 <= i < n_times
, 0 <= j < n_ports+2
, 0 <= k < 2
, 弧のベクトルを関連付けますが、その次元は先験的に知ることはできません。
これらのベクトルは順次作成されず、それらの要素も順次作成されませんpush_back
。
私が抱えている問題は、本来あるべきよりも多くのアークを持っていることに気づき、これらは以前に作成されたアークの痕跡であり、ベクトルのサイズを変更する必要があったときに別の場所に移動 (またはコピー?) したのではないかと疑っています。
これは、私が実際に取り組んでいることから始めて、問題を表示するために作成した、私がやっていることの最も最小限の例です。
どんな助けでも大歓迎です。間違ったデータ構造を使用していますか? 私は自分の後に何かを片付ける必要がありますか?等
c++ - フィールドとしての std::array の構文は何ですか? 内部のオブジェクトは、パラメーターを取る ctor で構築する必要がありますか?
bar が提供するいくつかのパラメーターを受け取る ctor を使用して、この配列をいくつかの値で構築する必要があります。それらがすべて同じ値に構築されていれば問題ありません。後で適切な値を割り当てるため、初期化する必要があります。これをグーグルで検索し、さまざまな構文を試しましたが、何らかの理由で正しく取得できません。
c++ - std::array に、配列に値を入れるコンストラクタがないのはなぜですか?
の不在ですか
見落とし?私には非常に便利なようで、動的コンテナー ( などstd::vector
) にも同様のコンストラクターがあります。
私は十分に承知している
しかし、それはコンストラクターではなく、メモリは最初にゼロになります。私 が すべてこの 人-1
の ように なり たい と 思っ たら?
c++ - std::initializer_list から std::array のようなデータ構造を構築する方法
コンパイル時の定数サイズ(のような)でデータ構造を実装したいstd::array
。このデータ構造を次のように初期化できるようにしたい:
これは、コンストラクター like: を使用して正常に動作しますが、コンパイル時に両方が既知であってもMyStruct(std::initializer_list<T> elements)
、コンパイラーは内部構造体とに同じサイズを適用しません。elements
はコンパイル時定数ではないstatic_assert
ので使えません。elements.size()
elements
と同じサイズをコンパイル時に強制する方法はありますMyStruct
か?
c++ - オブジェクトのインスタンス化中に std::array クラス メンバの要素数を定義することは可能ですか?
列数が固定された文字列テーブルをオブジェクトとするクラスを作成したいと考えています。列数はオブジェクトの有効期間中固定されるため、std::array
コンテナーから各行オブジェクトを宣言することにしました。
以下のコードは、このようなクラスを作成するための私の試みです。
エラーが表示されます (Visual Studio 2012 の場合):
このコードを実行することは可能ですか?
c++11 - std::array のデフォルトの初期化?
C++11では、構文が配列のすべての要素をデフォルトで初期化するstd::array
という保証がありますか?std::array<T, N> x;
編集:そうでない場合、すべての要素をデフォルト値に初期化するために、すべての配列(サイズがゼロの配列を含む)で機能する構文はありますか?
EDIT : cppreferenceでは、デフォルトのコンストラクターの説明は次のように述べています。
したがって、答えはイエスかもしれません。しかし、標準または将来の標準に従って、それを確認したいと思います。
c++11 - C++では、for_eachを使用して配列を逆に反復する方法は?
C++11 では、lambda/for_each を使用して、配列を最後から反復するにはどうすればよいですか?
次のことを試しましたが、どちらも無限ループになります。
何か案が?ありがとう。