私は c++ の初心者であり、オブジェクトへのポインターまたはオブジェクト自体をベクターに格納することに関するいくつかのトピックを既に読んでいます。実行時に多くのオブジェクトをプッシュバックしないため、オブジェクトをベクターに格納することにしました。ベクターは一度だけ作成され、このように残されます。
私の問題は、ベクトルを引数として取得し、渡されたベクトルで特定のオブジェクトを検索する別のオブジェクトがあることです。このオブジェクトが見つかった場合は、そのオブジェクトへのポインターが格納されます。見つからない場合は、変数が に設定されNULL
ます。
私は何もしていませんpush_back
が、ポインターは他の関数の間違った場所を指しているようです。ベクター内の要素を検索するオブジェクトには、ポインターを返すパブリック関数があります。すべての関数呼び出しでオブジェクトを検索すると非常に遅くなるため、これはオプションではありません。
他の解決策はありますか、それともポインタのベクトルに切り替える必要がありますか?
いくつかのコード スニペット:
ベクターを検索するオブジェクトのコンストラクター:
MySearch::MySearch(QVector<Obj> objVector)
:objVector(objVector) {
found = NULL
foreach(Obj o, this->objVector) {
if(..found..) {
found = &o;
break;
}
}
}
ゲッター関数:
Obj* MySearch::getObject() {
return found;
}