所以我在使用指针和弄清楚如何有效地使用它们时遇到了一些麻烦。
假设我有一个案例,我在 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
}
但是,当我这样做时,obj 会被 pop 删除,因为它是一个引用......
创建副本并让指针指向副本会更有效,还是每次迭代只创建一个新节点。告诉我,如果我在这里的思考过程也偏离了基础,我现在只是想了解实现这一目标的有效方法。
编辑:这是我测试 Dijkstra 算法的一部分,我在其中搜索许多节点并且它运行缓慢,所以我试图尽可能减少运行时间。