問題タブ [containers]
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++ - C++ STL 範囲コンテナー
double からオブジェクト ポインターにマップするコンテナーを探しています。ただし、各キーは、そのオブジェクトに対応する double の範囲にすぎません。
たとえば、<(0.0 3.0), ptr> または <(3.5 10.0), ptr2> のキーと値のペアが存在する可能性があります。
container[1.0] は ptr を返す必要があり、container[3.0] も ptr を返す必要があり、container[-1.0] は未定義である必要があります。
デフォルトで同様の動作をするオブジェクトはありますか、それとも自分で実装する必要がありますか?
編集
これが私が書いた実際のコードです。デバッグ/アドバイスを提供する方が簡単かもしれません。
現在、比較演算子が定義されているにもかかわらず、マップが double をキーとして受け入れるのに問題があります。
これが機能するかどうかをテストするために使用している運転コードを次に示します。
c++ - ユーザー定義型をキーとして std::maps を使用するにはどうすればよいですか?
ユーザー定義のクラスで STL マップを使用できない理由が不思議です。以下のコードをコンパイルすると、次の不可解なエラー メッセージが表示されます。どういう意味ですか?また、ユーザー定義型でのみ発生するのはなぜですか? (プリミティブ型は、キーとして使用する場合は問題ありません。)
C:\MinGW\bin..\lib\gcc\mingw32\3.4.5........\include\c++\3.4.5\bits\stl_function.h||メンバー関数内 `bool std:: less<_Tp>::operator()(const _Tp&, const _Tp&) const [ with _Tp = Class1]':|
C:\MinGW\bin..\lib\gcc\mingw32\3.4.5........\include\c++\3.4.5\bits\stl_map.h|338|`_Tp& std からインスタンス化:: map<_Key, _Tp, _Compare, _Alloc>::operator[](const _Key&) [ with _Key = Class1, _Tp = int, _Compare = std::less, _Alloc = std::allocator >]'|
C:\Users\Admin\Documents\dev\sandbox\sandbox\sandbox.cpp|24|ここからインスタンス化|
C:\MinGW\bin..\lib\gcc\mingw32\3.4.5........\include\c++\3.4.5\bits\stl_function.h|227|エラー: 'operator に一致しません<' in '__x < __y'| ||=== ビルドが終了しました: 1 エラー、0 警告 ===|
apache-flex - Flex 3 で高さが明示的に (ピクセル単位で) 設定されていない限り、VBox を自動スクロールできません
プログラムで子を動的に追加および削除する VBox があります。高さは 100% に設定され、verticalScrollPolicy=auto です。
ユーザーがその Vbox に別の子を追加したい場合、子が追加される場所であるため、VBox の一番下まで自動スクロールする必要があります。
私はオンラインで見つけることができるすべての解決策を試しましたが、何があっても、verticalScrollPosition と maxVerticalScrollPosition はどちらも常に 0 です。手動で VBox の一番下までスクロールし、これらの数値を警告するボタンを押しても。 'validateNow()' も)。
これらの数値をプログラムで変更できるのは、VBox の高さがピクセル単位で設定されているときだけです。これは、子の高さがすべて異なるため、望ましくありません。
高さをピクセル単位でハードコーディングせずに verticalScrollPosition を設定できることを教えてください。ここで完全に明らかな何かが欠けていますか?
c++ - これらの条件が与えられた場合、STLでのスレッド化は問題ありませんか?
私はフォームのコレクションを持っています:
リストの最後に挿入するだけで、マップ全体から読み取ることもあります(ただし、初期化時を除いて、マップに書き込むことはありません)。
私が理解しているように、どのSTLコンテナーもスレッドセーフではありませんが、実際には、キーごとに最大1つのスレッドしか持つことができません。この配置でかなり安全だと仮定して、何かが足りませんか?
wpf - モジュールがメニューにロードされる Prism の例を探しています
各モジュールが別のモジュール内のメニューのメニュー項目として自分自身を登録する Prism を使用した WPF コード例を知っている人はいますか?
(私は現在、EventAggregator でこれを実行しようとするアプリケーションを持っているため、1 つのモジュールが他のモジュールから発行されたイベントをリッスンし、そのタイトルをメニュー項目としてメニューに含める必要がありますが、順序に問題があります。読み込みやスレッド化などの例です。これを行うために古典的な Prism 構造を使用する例を見つけたいと思います。)
私はこれに関して次のように考えています。
Shell.xaml:
契約ビュー:
顧客ビュー:
しかし、Prism 以外の MVVM アプリケーション構造を作成したことがあり、メニューは常に ViewModel の ObservableCollections に適切にバインドされており、上記はこの素晴らしいパターンを破っているようです。上記は Prism で行う通常の方法ですか?
c++ - C++コレクション内のオブジェクトのメモリ管理
整数を(オブジェクトの)ベクトルに関連付けるマップがあります。これらのベクトルは、実行する一連のタスクを表します。このマップとベクトルを使用しているときに発生するコピーの量を減らすために、ポインターを使用するように設定しました。
myMapを保持するクラスの初期化中に、新しいMyObjectsで満たされた新しいベクトルを作成してmyMapにデータを入力します。
しかし、私が懸念しているのはメモリ管理です。今、私はこれらのさまざまなオブジェクトをヒープのどこかに置いてあり、それらを使い終わったらそれらをクリーンアップする責任があります。私はまた、プログラムが終了するまで、私は決して彼らと一緒に終わらないことを知っています。しかし、誰かがこのアプリを変更する賢い方法が地図/ベクトルからアイテムを削除することを含むと決定したとき、10週間でどうでしょうか。これにより、メモリリークが発生します。
私の質問は、これらのオブジェクトの適切な割り当て解除を処理して、STL関数を介してオブジェクトが削除された場合でも、オブジェクトの割り当てが正常に解除されるようにするにはどうすればよいですか?
あなたの助けは大歓迎です、私が何か重要なものを逃したかどうか私に知らせてください!ありがとう!
wpf - Prismのresolve<>メソッドで起こっている魔法を誰かが説明できますか?
次のInitialize()メソッドを持つCustomersModule.csがあります。
コンテナから解決するクラスは次のようになります。
TestWhateverクラスは、私が作成した単なるダミークラスです。
それでも、私が登録したことがなくても、コンテナは問題なく解決 されます。また、コンテナはどういうわけかTestWhateverを見つけてインスタンス化し、に注入します。CustomersPresenter
CustomersPresenter
コンテナが非常に自動であると明示的に述べているPrismのドキュメントのどこにも見つからなかったので、これに気付いて非常に驚きました。
ですから、これは素晴らしいことですが、私が知らないコンテナは他に何をしているのでしょうか。つまり、私が知らない他に何ができるのでしょうか。たとえば、他のモジュールからクラスを注入できますか?モジュールがロードされた場合、コンテナはそれらを注入し、そうでない場合はnullを注入しますか?
wpf - Prismのモジュールを大まかに参照して、存在できるようにする、または存在できないようにするにはどうすればよいですか?
このスタックオーバーフローの質問で、 Prism / Unityは思ったほど分離されていないことを学びました。たとえば、menuManagerをコンストラクターに注入するこのクラスがある場合、このクラスが実際にどこかに存在することを確認する必要があります(クラスを含む.dllをプルするだけで、コンテナがそれを処理します。たとえば、その場所にnullを挿入します):
しかし、私はそれに対処することができます:アプリケーションはMenuModuleなしでは実行できません(または、提案されたように、アプリケーションが壊れないようにするだけのNullMenuModuleを持つことができます)。
ただし、私が構築しているアプリケーションでは、MenuModuleにMenuManagerクラスがあり、すべてのモジュールは、メニューに必要なすべてのものをMenuManagerに登録する必要があります。ただし、 MenuModuleを交換できるようにしたいです。たとえば、InfragisticsMenuModuleとTelerikMenuModuleなどがあります。
ただし、CustomersModuleなどにいる場合、TelerikMenuModuleを使用するには、それを参照する必要があります。また、InfragisticsMenuModuleを使用する場合は、それを参照する必要があります。
では、すべてのモジュールを新しい参照で再コンパイルせずに、TelerikMenuModuleをInfragisticsMenuModuleと「ホットスワップ」するにはどうすればよいでしょうか。たとえば、これを置き換えたい場合は次のようになります。
これとともに:
アプリケーションを再起動するだけで、新しいInfragisticsMenuModule.dllで実行され、TelerikMenuModule.dllが存在しなくなったことを通知しません。
c++ - C++ STL 連想コンテナーからのキー/値の結合
STL 文字列を操作する結合関数があります。次のようなコンテナに適用できるようにしたい:
つまり、コレクション内の一致するすべてのキーを検索し、指定されたセパレーターを使用して値を 1 つの文字列に連結します。キーの範囲、コンテナの内容全体などについても同じlower_bound()
です。upper_bound()
begin()
end()
私が得ることができる最も近いものは次のとおりです。
(キー/値の型を継承すること、std::string
またはキー/値の型が何であれ、継承することは一般的に悪い考えであると認識していますが、関数をオーバーロードしたりオーバーライドしたりしていません。また、仮想デストラクタは必要ありません。for_each
暗黙の変換演算子を定義しなくても、 の結果を直接使用できます。)
との代わりにとjoin_range_keys
を使用するには、非常によく似た定義があります。結合とキーについても同様の定義が機能すると思いますが、その必要はありませんでした。first_type
p.first
second_type
p.second
std::set
std::multiset
これらの関数を、さまざまな型の文字列を含むコンテナーに適用できます。キーと値のタイプのとの任意の組み合わせmap
とmultimap
の任意の組み合わせが機能するようです。string
wstring
これにより、いくつかの質問が残ります。
- 同じことを達成するための簡単な方法がありませんか? 関数のシグネチャは特に複雑すぎるようです。
- 毎回
join_values
呼び出す必要がないように、テンプレート パラメーターの型を自動的に推測する方法はありますか?join_values<MapType>
join_values
関数とjoin_keys
ファンクターをリファクタリングして、ほとんどのコードが重複しないようにするにはどうすればよいですか?
に基づく少し単純な解決策を見つけましたstd::accumulate
が、範囲内の各要素に対して文字列全体の 2 つの完全なコピー操作が必要なようです。
c++ - イテレータと循環参照の C++ コンテナ
相互に反復子を含む 2 つのコンテナーを作成したいと思います。中間/間接タイプを導入せずに、うまくいけばこれを行いたいと思います。これは可能ですか、それともコンテナーのデータ型のサイズを知っているかによってイテレーターの型を変更しますか?
コンパイルしたいサンプルコードを次に示します。
気にしないで、今すぐコンパイルします。意図した両端キューではなく、そこにキューがありました:)