問題タブ [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.
c++ - boost::ptr_vector から要素を消去する方法
したがって、boost::ptr_vector を使用して std::vector を取り除こうとしています。今、要素を要素から削除しようとしており、削除された要素も削除されています。私にとって最も明白なことは、次のことでした。
しかし、これはコンパイルすらできません (完全なエラー メッセージについては以下を参照してください)。std::vector の場合と同じように、消去/削除イディオムを試しましたが、boost::ptr_vector のすべてのアルゴリズムは、std::vector のものとは少し異なることがわかりました。
だから私の質問:
- ptr_vector からポインターを削除するにはどうすればよいですか?
- 削除した要素を手動で delete() する必要はありますか?
コンパイラ エラー:
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 で前後に変換したりするべきではないと誰かに言われました。これは可能ですか、それとももっと直感的な方法がありますか?
前もって感謝します。
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 と逆参照を取得できますか?
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
c++ - ある Boost ptr_container から別の Boost ptr_container へのオブジェクトの移動
特定の要素を a から b に移動したい:
release 関数が を返すため、上記のコードはコンパイルされませんboost::ptr_container_detail::static_move_ptr<...>
。これはプッシュバックには適していません。
どのように進めればよいですか?
編集:返されたオブジェクトには、生のポインターを提供する.get() .release()
があることがわかりました(これは、例外の安全性の問題にもつながる可能性があります)。ただし、文書化されていない内部機能に依存したくないので、より良い解決策を自由に共有してください...
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.
boost - ブーストptr_vectorを反復処理
自分のオブジェクトのptr_vectorリストがあります。このようなもの:
c++ - ブーストする方法はありますか?ptr_vectorを割り当てますか?
通常このように:
を除いて:
理由を知る必要がある場合; ptr_vector
の代わりに使用してvector
いるので、要素を削除する必要はありませんが、Boost.Assignを使用して初期化する必要がありptr_vector
ます(コード内のどこでもconst
使用できませんpush_back()
) 。pop_back()
よろしくお願いします。間違ったコンテナタイプを使用している可能性がありますか?
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
私が間違っていることと、それを修正する方法を教えてください。
c++ - ptr_vector --_ CrtDumpMemoryLeaks()-デストラクタが呼び出されてもメモリリークが発生する
私はゲームエンジンに取り組んでおり、以前の質問では、ポインタのリストを維持するためにboost::ptr_vectorの使用を開始することが提案されました。
基本的な考え方は、いくつかの州を持つことです。各州にはSceneGraphがあります。各状態には、初期化してから独自のSceneGraphを詰め込むいくつかのリソースがあります。SceneGraphには、リソースポインタを詰め込むboost::ptr_vectorがあります。
関連するコードは次のとおりです。
リソースの作成とTestStateでのSceneGraphへの追加
シーングラフ
関連する行でmain.cppを編集しました
_CrtDumpMemoryLeaks()を使用して、メモリリークログレポートを出力しています。ログレポートには、メモリリークがあることが示されています。
_CrtDumpMemoryLeaks()でboost :: ptr_vectorに問題がありますか、それとも何か間違ったことをしましたか?デバッガーは、Stateがそのデストラクタ(sceneGraphを削除します)を呼び出すことを通知します。また、SceneGraphのデストラクタも呼び出されることを確認しました。
どんな助けでも大歓迎です、私は空のメモリリークレポートを見たいです:-)