[解決済み] コンテナには、オブジェクト全体とオブジェクトへのポインタのどちらを格納すべきですか?
2022-04-24 14:35:59
質問
新しいシステムを一から設計しています。 STLを使って、ある長寿命オブジェクトのリストとマップを保存するつもりです。
質問です。 それとも、ライフ&スタンプを自分で管理して、それらのオブジェクトへのポインタをSTLコンテナに格納する方が一般的に良いですか?
しかし、私はこれらのソリューションの両方が可能であることを知っているので、もしそれが存在するならば、私は"理論的"より良い答えを探しているのです。
ポインターを使った遊びには、2つの非常にわかりやすいデメリットがあります。 1) これらのオブジェクトのアロケーション/ディロケーションをSTLを超えたスコープで自分で管理する必要がある。 2) スタック上にtempオブジェクトを作成し、コンテナに追加することができない。
他に何か足りないものはありますか?
解決方法は?
ポインターを使うことの効率性を指摘する声が上がっているので。
std::vector の使用を検討している場合、更新が少なく、コレクションを繰り返し使用することが多く、非多相型であれば、オブジェクトの "copies" を格納する方が参照の局所性が得られるため、効率が良くなります。
一方、更新が頻繁に行われる場合は、ポインタを保存することで、コピーと再配置のコストを削減することができます。
関連
-
[解決済み】coutはstdのメンバではない
-
[解決済み】「corrupted size vs. prev_size」glibc エラーを理解する。
-
[解決済み】C++プログラムでのコンソールの一時停止
-
[解決済み】C++ - ステートメントがオーバーロードされた関数のアドレスを解決できない。
-
[解決済み] static_cast, dynamic_cast, const_cast, reinterpret_cast はいつ使うべきですか?
-
[解決済み] スマートポインターとは何ですか?
-
[解決済み] なぜ、オブジェクトそのものではなく、ポインタを使用しなければならないのですか?
-
[解決済み] C++でクラスと構造体はいつ使い分けるべきか?
-
[解決済み] リファレンスとポインタの使い分け
-
[解決済み] なぜC++ STLは "ツリー "コンテナを提供しないのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++でint型に無限大を設定する
-
[解決済み】 != と =! の違いと例(C++の場合)
-
[解決済み】C++エラーです。"配列は中括弧で囲まれたイニシャライザーで初期化する必要がある"
-
[解決済み】Cygwin Make bash コマンドが見つかりません。
-
[解決済み] 非常に基本的なC++プログラムの問題 - バイナリ式への無効なオペランド
-
[解決済み】#include<iostream>は存在するのですが、「識別子 "cout "は未定義です」というエラーが出ます。なぜですか?
-
[解決済み】システムが指定されたファイルを見つけられませんでした。
-
[解決済み】デバッグアサーションに失敗しました
-
[解決済み】エラー。引数リストに一致するコンストラクタのインスタンスがない
-
[解決済み】標準コンテナでstd::auto_ptr<>を使うのはなぜいけないのでしょうか?