問題タブ [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 投票する
6 に答える
12047 参照

c++ - boost::ptr_vector から要素を消去する方法

したがって、boost::ptr_vector を使用して std::vector を取り除こうとしています。今、要素を要素から削除しようとしており、削除された要素も削除されています。私にとって最も明白なことは、次のことでした。

しかし、これはコンパイルすらできません (完全なエラー メッセージについては以下を参照してください)。std::vector の場合と同じように、消去/削除イディオムを試しましたが、boost::ptr_vector のすべてのアルゴリズムは、std::vector のものとは少し異なることがわかりました。

だから私の質問:

  • ptr_vector からポインターを削除するにはどうすればよいですか?
  • 削除した要素を手動で delete() する必要はありますか?

コンパイラ エラー:

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

c++ - boost::ptr_vector および boost::any に関する問題

わかりましたので、疑問があります。これが可能かどうか知りたいです。

一般的なデータ(文字列、整数、ブール値など)を含むデータベースを使用しています。オブジェクトが構築されるか、オブジェクトのメンバーが変更されるたびに、特定のアクション (SELECT または UPDATE) を使用してデータベースにクエリを実行する必要があります。まず第一に、これは DB 関連の質問ではありません。私の本当の問題は、オブジェクトのメンバーへの boost::any のポインタを保持する ptr_vector があることです。次のようなコードで:

次に、変更したいメンバーを、引数として boost::any* を取る別のその他のクラスの関数に渡します。

その同じクラスは any* を受け入れ、次のことを行います。

Enemy_Values は ptr_vector です。したがって、Enemy_Values をメンバーとして持つこの misc_class にアクセスするとき、内部の auto_ptr が指している値を変更したいと考えています。

ここで、違反エラーが発生します。私は多くのことを試しましたが、auto_ptr のコンテナーを使用したり、boost::any で前後に変換したりするべきではないと誰かに言われました。これは可能ですか、それとももっと直感的な方法がありますか?

前もって感謝します。

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

c++ - ドキュメントと一致しない、boost::ptr_vector のリリース

私はブースト 1.37 を使用しており、boost::ptr_vector を使用してその所有権を譲渡し、関数から返すことができるようにしようとしています。ブーストのドキュメントを見る ( http://www.boost.org/doc/libs/1_36_0/libs/ptr_container/doc/tutorial.html#new-functions )

私は試した:

}

コンパイラ エラー:

これはブーストのドキュメントの不具合ですか? ptr_vector を戻すために auto_ptr と逆参照を取得できますか?

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

c++ - boost::ptr_vector を deque に追加、typeid の不一致

push_back() を使用して、boost::ptr_vector を std::deque に追加しようとしています。すると、typeid の不一致に対して BOOST::ASSERT が返されます。

「boost_ptr_container_clone_allocator」で

TotalView から、resおよびr:

私には同じように見えます。

追加しようとしている ptr_vector にはdiagnostic_database_loader::JointDiagnosticDBClass、上記から派生した のインスタンスがありますdiagnostic_database_loader::DiagnosticDBClass

ptr_vector の要素の typeid を出力しました

簡単なテスト プログラムでこれを再現しようとしましたが、同じ問題は発生していません。

テストプログラムは正常に動作します。


*テストコードで問題を再現する方法を知っている人はいますか?
* 実際のプログラムで問題を修正しますか?

完全なコードが必要な場合:
https://code.ros.org/svn/wg-ros-pkg/trunk/sandbox/diagnostic_database_loader

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

c++ - ある Boost ptr_container から別の Boost ptr_container へのオブジェクトの移動

特定の要素を a から b に移動したい:

release 関数が を返すため、上記のコードはコンパイルされませんboost::ptr_container_detail::static_move_ptr<...>。これはプッシュバックには適していません。

どのように進めればよいですか?

編集:返されたオブジェクトには、生のポインターを提供する.get() .release()があることがわかりました(これは、例外の安全性の問題にもつながる可能性があります)。ただし、文書化されていない内部機能に依存したくないので、より良い解決策を自由に共有してください...

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

boost - boost :: ptr_vector <...>::iteratorを別のboost::ptr_vectorにプッシュバックしますか?

私は次のコードを持っています(ここに入力しただけで、タイプミスなどがあるかもしれません):

私の問題は、イテレータをプッシュバックできないことです。イテレータからポインタを取得できません。

Is there an easy way i didnt see, or are boosts ptr_vector the false choice for this case?

Thanks in advance.

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

boost - ブーストptr_vectorを反復処理

自分のオブジェクトのptr_vectorリストがあります。このようなもの:

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

c++ - ブーストする方法はありますか?ptr_vectorを割り当てますか?

通常このように:

を除いて:

理由を知る必要がある場合; ptr_vectorの代わりに使用してvectorいるので、要素を削除する必要はありませんが、Boost.Assignを使用して初期化する必要がありptr_vectorます(コード内のどこでもconst使用できませんpush_back()) 。pop_back()

よろしくお願いします。間違ったコンテナタイプを使用している可能性がありますか?

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

c++ - boost::ptr_vector と find_if

私はクラスを持っています:

これをコンパイルすると、エラーが発生します。

エラー 1 エラー C2440: '初期化中':
'const CMDatabase::Try' から 'CMDatabase::Try
*' に変換できません c:\program files\microsoft visual studio 9.0\vc\include\functional 296

私が間違っていることと、それを修正する方法を教えてください。

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

c++ - ptr_vector --_ CrtDumpMemoryLeaks()-デストラクタが呼び出されてもメモリリークが発生する

私はゲームエンジンに取り組んでおり、以前の質問では、ポインタのリストを維持するためにboost::ptr_vectorの使用を開始することが提案されました。

基本的な考え方は、いくつかの州を持つことです。各州にはSceneGraphがあります。各状態には、初期化してから独自のSceneGraphを詰め込むいくつかのリソースがあります。SceneGraphには、リソースポインタを詰め込むboost::ptr_vectorがあります。

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

リソースの作成とTestStateでのSceneGraphへの追加

p>

シーングラフ

p>

関連する行でmain.cppを編集しました

p>

_CrtDumpMemoryLeaks()を使用して、メモリリークログレポートを出力しています。ログレポートには、メモリリークがあることが示されています。

_CrtDumpMemoryLeaks()でboost :: ptr_vectorに問題がありますか、それとも何か間違ったことをしましたか?デバッガーは、Stateがそのデストラクタ(sceneGraphを削除します)を呼び出すことを通知します。また、SceneGraphのデストラクタも呼び出されることを確認しました。

どんな助けでも大歓迎です、私は空のメモリリークレポートを見たいです:-)