問題タブ [stdlist]

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.

0 投票する
1 に答える
164 参照

c++ - C++ アプリケーションでのメモリ リーク

私はすでにこのスニペットでメモリ リークを見つけようと何千回も試みましたが、惨めなほど失敗しています...メモリ割り当てとこれらのことを学んでいますが、完全に解放されるプログラムを作成することはできませんでしたまだ思い出です…

for ループを呼び出して、140 個の Contato_s 構造体を割り当て、それらを Agenda std::list に入れています。次に、別の for ループを呼び出して、RemoverContato とそれぞれのコードを使用して 140 の連絡先すべてを削除します... Windows は、解放されたメモリの 1 KB を報告しません!

前もって感謝します :)!

- 編集

さて、それは私が連絡先を破壊しようとしている方法です:

(私は常に「連絡先Xが削除されました」と表示され、その部分で失敗しないため、理論的には連絡先が見つかっています)

0 投票する
2 に答える
8831 参照

c++ - std :: list thread_safety

  1. 1つのスレッドがpush_backを実行し、他のスレッドが時々リストをループしてすべての要素を出力するリストがあります。この場合、ロックが必要ですか?
  2. 他のオブジェクトの要素へのポインタがあります。持っていても大丈夫ですか?より多くのスペースが必要な場合、vectorはすべてのオブジェクトを移動するため、ポインターは無効になります。

    mylist.push_back(MyObj(1));
    if(someCond)
    {
    _myLastObj =&mylist.back();
    }

_myLastObjタイプですMyObj*

ベクトルを使用した場合、オブジェクトは別の場所に移動され、ポインターはゴミを指します。リストで安全ですか?

0 投票する
2 に答える
934 参照

c++ - 回文の最長を見つけるための C++ の高速化

私は Koeing アクセラレーテッド C++ を練習しており、自分の答えを検証したいと考えています。net には解決策がないため、ここに投稿して、私の解決策について専門家の意見を聞くことにしました。人々が私がここに投稿することを好むかどうかはわかりません. そうでない場合は、お知らせください。今後は行いません。また、これは宿題ではなく、私の C++ スキルを次のレベルに引き上げたいという純粋な願望です。

問題:辞書にあるすべての回文を見つけるプログラムを作成してください。次に、最長の回文を見つけます。

これまでに行ったこと-> 回文をテストする関数を定義し、すべての単語をリストに保存しました。以下にコードを掲載しました。

私が立ち往生している場所: ベクトルよりもリストデータ構造を使用するという私の選択が良いかどうかに関係なく、アドバイスが必要ですか? 第二に、最も長い単語を表示する方法に行き詰まっています。最長の長さは表示できますが、最長の単語は表示できません。

以下の私の試み

0 投票する
3 に答える
485 参照

c++ - c++ ベクトルの並べ替え

これは、STL std::sort 関数を使用したソートの背後にあるメカニズムに関する一般的な質問です。並べ替えに関するいくつかの投稿を読みましたが、一般に、ベクトルの並べ替えは、リンクされたリストの並べ替えよりも高速です。これは構造/オブジェクトのベクトルとリンクされたリストに当てはまりますか? 構造のリンクされたリストの場合、インデックスを変更するだけで簡単にソートできると思います。一方、ベクトルの並べ替えは、構造体/オブジェクトのデータが連続しているため、データの場所を物理的に切り替える必要があるように見えます (これは本当ですか?)。その場合、リンクされたリストをソートする方が速いようです。

編集!!!: 写真付き:

ここに画像の説明を入力

したがって、質問はより適切に表現されていると思います:オブジェクトの並べ替え、リンクされたリストの並べ替え、またはベクトル (これはオブジェクトのサイズに依存する場合があります) のどちらが高速ですか? また、連結リストのソートは 3) のように行われ、ベクトルのソートは 2) のように行われますか?

0 投票する
1 に答える
393 参照

c++ - C++ リスト反復子 reverse_iterator

重複の可能性:
std::list の push_back が、rbegin で初期化された逆反復子を変更するのはなぜですか?

次のようなコードを取得しました。

出力:

フォワード iterator を定義した後it、 を呼び出しpush_front()ても、の位置はit変わらないようです。しかし、reverse_iterator を定義した後でritを呼び出すと、 WILLpush_back()の位置が変わります。rit

これは矛盾と考えるべきでしょうか?片方が動き、もう片方が同じままというのは、私にはまったく意味がありません。

前もって感謝します。:)

0 投票する
2 に答える
641 参照

c++ - 範囲外のコンテナとメモリ管理

重複の可能性:
std::list::remove メソッドは、削除された各要素のデストラクタを呼び出しますか?

私がこれを持っていると仮定します:

xList が範囲外になると、コンテナはリスト内に含まれるオブジェクトのデストラクタを呼び出す必要があることを知っていますか? まず、それは本当ですか?

もしそうなら、リストにはクラス X へのポインタが含まれているため、xList が範囲外になったときにデストラクタ ofX を呼び出すべきではありませんか? したがって、X によって保持されていたメモリを解放しますか?

0 投票する
1 に答える
840 参照

c++ - ポインターを使用して std::list からアイテムを削除する

.remove とオブジェクトをポインターとして使用して std::list からオブジェクトを削除することは可能ですか?

私はポインターとかなり混乱しています。たとえば、次のクラスがあります。

これには、私の小惑星オブジェクトへのポインタのリストがあります。これはポインターなので、ポインターを使用してそれを調べて削除できると思います。

私のメイン クラスでは、AsteroidGen のインスタンスを作成し、リストにデータを入力して描画します。これはすべてうまくいきます。次に、弾丸が衝突したリストから項目の 1 つを削除しようとします。

コードを 1 行ずつ調べて何が問題なのかを確認しようとしましたが、次のフレームでリスト項目が実際に削除されません。私はおそらくポインターを正しく使用していませんが、それでも難しいと思います。

誰かアドバイスをください!さらにコードを追加する必要があるかどうか教えてください。これで十分だと思いました。ありがとうございます。

0 投票する
5 に答える
282 参照

c++ - 複数のリストが指すデータを削除しますか?

複数のリストになる可能性のあるオブジェクトがあります。

例えば

両方のリストに同じ方法で配置されるオブジェクトが多数存在する可能性があります。スマート ポインターを使用するのは簡単なことだと思いますが、私をマゾヒストと呼んでください。

現在、私はこのテクニックを試しています:

しかしdelete lista;、実行時に相当するもので壊れます。ポインターについてもっと賢い人が私を助けてくれることを願っています。前もって感謝します!

PS Windows 7/MinGW を実行しています。

0 投票する
1 に答える
951 参照

c++ - 構造体を含むリストのマップ(リストを含む)—マップを介して構造体内のリストにアクセスできません

検索エンジンを起動しましたが、問題に対応する答えが見つかりません。

基本的に、マップが必要です。各エントリには構造体のリストが含まれています。構造体自体には、2つstd::stringの変数と1つのが含まれていstd::list<string>ます。

構造体内のリストにアクセスしているにもかかわらず、すべてが期待どおりに機能します。

1つのメソッド(ここではgetRules)は、必要に応じてマップエントリを作成し、それにリストを添付して、それに1つの構造体(ここではRule)要素を追加します。このメソッド内で別のメソッド(ここではgetRuleParams)が呼び出され、構造体内のリストへの要素の追加を処理する必要があります。

getRuleParamsメソッド内で、要素が追加されたリストには、struct要素を介して直接アクセスできます。「sourrounding」メソッド内では、要素が追加されたリストにも、struct要素を介して直接アクセスできます。

しかし、構造体のリストにアクセスしたい場合、またはより適切にはリスト要素にアクセスしたい場合は、奇妙なことが起こります。アドレスが変更されたことがわかりました(構造体、構​​造体内のリスト....)

あなたは私のコードが生成する出力でそれを見ることができます(それが正しくコーディングされていると仮定して)。

私はC++を初めて使用するので、非常に簡単で重要なものが欠けている可能性があります。呼び出されるいくつかのコピーコンストラクターと関係がありますが、すべての「変数」へのポインターのみを使用した場合と同じ動作になるのはなぜですか?

ここの誰かが私を啓発してくれることを本当に願っています。

私は自分の問題を可能な限り単純化/分離しました。(メソッドのシグネチャはそのようにする必要があります。たとえばvoid*、他の関数に依存しているためです)

以下のコードを参照し、事前に感謝します。