問題タブ [ptr-vector]

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 に答える
157 参照

c++ - C++:メンバー参照またはポインター?

私はいくつかのファンクターに渡す必要があるオブジェクトのコレクション (現在boost::ptr_vector) を持っています (これを vec と呼びましょう)。すべてのファンクターに、基本的にキャッシュである同じ vec への参照/ポインターを持たせて、各ファンクターが同じデータ キャッシュを持つようにします。これを行うには、次の 3 つの方法が考えられます。

  1. Functor クラスboost::ptr_vector<object>&のコンストラクターにa を渡し、メンバーFunctorを持つboost::ptr_vector<object>&

  2. boost::ptr_vector<object>*Functor のコンストラクターにa を渡し、boost::ptr_vector<object>*Functor クラスにメンバーを持つ

  3. の使用を避け、配列 ( ) をコンストラクターにboost::ptr_vector直接渡すobject*

方法 3 を使用しようとしましたが、生のポインターの代わりにベクターを使用する必要があると常に言われました。そのため、方法 2 を試しましたが、ポインターによって追加された余分なレベルの間接性が原因で、プログラムにレイテンシが追加されました。現時点では方法 1 を使用していますが、ファンクターの有効期間中にキャッシュを再割り当てする必要がある場合があるため (データ キャッシュが変更される可能性があるため)、これは適切な代替手段ではない可能性があります。

私は完全には理解していません。ファンクターがコピーされている途中のどこかを想定しています (ただし、これらはすべて ptr_vector 自体に格納されています)。

方法 3 は私の場合に最適ですか? 方法 2 は遅すぎます (レイテンシーが非常に重要です)。方法 1 に関しては、代わりにベクトルを使用するように何度もアドバイスされています。

どんなアドバイスでも大歓迎です

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

c++ - C++: なぜ boost::ptr_vector のサイズ変更には、デフォルトのコンストラクタを持つオブジェクトが必要なのか

すべてのポインターの削除を処理するため、std::vector だけで boost::ptr_vector を使用しています。しかし、私がするとき:

SoftLabelRandomTreeFunctorデフォルトのコンストラクターがないと文句を言います。ただし、 * a自体のサイズではなく、 * number_of_functorsa へのポインターのサイズに合わせて十分に大きくする必要があるという印象を受けました。SoftLabelRandomTreeFunctornumber_of_functorsSoftLabelRandomTreeFunctor

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

c++ - BOOST と C++: ポリモーフィズムを機能させることができないようです

「形状」を格納するために ptr_vector を使用しています。「円」などの派生形状クラスで埋めようとしていますが、それらをダウンキャストしようとするたびにキャストが悪くなります。

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

c++ - boost::ptr_vector を使用した C++ のメモリ リーク

タスク マネージャーを開いてメモリ使用量を確認すると、.3MB のメモリ使用量から始まります。ptr_vector に 100,000 個のオブジェクトを追加すると、2.3MB のメモリが使用されます。ベクターで .clear() を使用した後、メモリは .8-.9MB になります。このメモリ使用量の増加の原因は何ですか?

コードは次のとおりです。

助けてくれてありがとう。

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

c++ - boost::ptr_vector ソート関数

ソートされた順序で維持したいboost::ptr_vectorがあります。

私は、いくつかの単純な文字列と値を含む一連の Customer オブジェクトを作成しています。これらは、boost::ptr_vector に格納され、文字列の 1 つで並べ替える必要があります。

私は周りを見回しましたが、boost::ptr_vector メンバー関数に関する多くの情報を見つけることができないようですが、私がやろうとしていることに関連していると思われる sort() と呼ばれるものがあるようですが、多くの情報はありませんこの機能の使用について。

boost::ptr_vector で使用できる「順番に挿入」タイプの関数はありますか? または、すべてをベクターにロードしてからソートする必要がありますか?

どんな助けでも大歓迎ですありがとう

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

c++ - boost::ptr_vector のコンテナ クラスを作成する

boost::ptr_vector のコンテナ クラスを作成しようとしていますが、イテレータを動作させるのに少し苦労しています..

これは、実装しようとしているメンバー関数の1つです。

私が得ているエラーは次のとおりです。

これを修正する方法のアイデアはありますか?

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

c++ - boost::ptr_vector からテンプレート パラメータを取得する

からboost::ptr_vector<T>を取得しようとしていますTが、 のboost::ptr_vector<T>::value_typeようT*です。どうすれば入手できTますか?

ドキュメントを見ると、次のように表示されます。

どれも役に立ちません...