gpt4 book ai didi

c++ - 将拷贝分配给指针

转载 作者:行者123 更新时间:2023-11-28 00:46:51 25 4
gpt4 key购买 nike

所以我在使用指针和弄清楚如何有效地使用它们时遇到了一些麻烦。

假设我有一个案例,我在 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 算法的一部分,我在其中搜索许多节点并且它运行缓慢,因此我试图尽可能地减少运行时间。

最佳答案

复制和创建指向拷贝的指针与您的第一个示例大致相同。要修复您的第二个示例:

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

此外,大多数人会认为这是微优化。除非您的 Node 类非常庞大,并且您已经将这个特定片段确定为瓶颈,否则您最好不要担心它。

关于c++ - 将拷贝分配给指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15940097/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com