在做一个处理图论的项目时,我使用了这样的对象:
class Node{
vector<Node> nodeList;
};
Node n = new Node();
Node a = new Node();
n.nodeList.push_back(a);
在创建了大约 20 个节点后,每个节点平均有 3 个与其他节点的连接,我的程序基本上会挂起。
为了解决这个问题,我将对象声明更改为
class Node{
vector<Node*> nodeList;
};
Node* n = new Node();
Node* a = new Node();
n.nodeList.push_back(a);
我的程序立即通过 50 个节点运行 10 个连接。
第二个示例运行得更快,因为我只是添加指向列表的指针,而不是实际的节点,对吧?
但是 C++ 文档说new
关键字返回一个指向创建对象的指针。为什么在第一个示例中将整个对象放入向量中,而不仅仅是指针?
C++ 中的标准是否有任何理由将整个对象复制到数据结构而不是指针中?
编辑:我很抱歉,你是对的,第一个例子不应该编译。我的驱动器上不再有第一个示例,我不记得确切的情况。对不起。