0

そのため、ポインターに少し問題があり、それらを効果的に使用する方法を見つけています。

そのような while ループでスタックから「ノード」オブジェクトをポップするケースがあるとします。

while(...) {
   Node obj = stack.top();
   stack.pop();
   //do something with the obj
}

効果的に実行することを考えていましたが、ループの反復ごとに新しいノードを作成するべきではありません...したがって、ループの外側でノードポインターを初期化する方が賢明かもしれないと思いました:

Node* obj;
while(...) {
   obj = &stack.top();
   stack.pop();
   //do something with the obj
}

ただし、これを行うと、参照であるため、オブジェクトはポップで削除されます...

コピーを作成してそのコピーを指すポインターを持っているか、反復ごとに新しいノードを作成する方が効率的でしょうか。ここでも私の思考プロセスがベースから外れているかどうか教えてください。私は今、これを達成するための効率的な方法について学ぼうとしています.

編集:これは、ダイクストラのアルゴリズムをテストすることの一部です。多くのノードを検索していて、実行速度が遅いため、可能な限り実行時間を短縮しようとしています。

4

2 に答える 2