我在我的代码中使用 vector 。
导致错误的行如下:
vector<Node> alt_seq ;
alt_seq = vector<Node>(1000);
for(int j=0; j<alt_cf.getNoOfNodes(i); j++)
{
Node temp_node = *alt_itr;
alt_itr++;
alt_seq.push_back(temp_node);
}
行:
alt_seq.push_back(temp_node);
导致运行时错误。但是,如果我按如下所示用一些初始大小初始化 Vector:
vector<Node> alt_seq(1000) ;
在这种情况下,代码工作正常。 但是我不想给出初始大小,因为 vector 中的对象数量在运行时是可变的。 请帮我。我是 C++ 新手。
完整的方法函数供您引用:
最佳答案
您的 Node
类有一个类型为 CombinedFragment*
的指针成员,称为 cfrag
。如果您没有定义自己的复制构造函数和赋值运算符,则会创建悬空引用。此外,如果 Node
负责分配/取消分配 cfrag
,则需要适当的 dtor 来防止泄漏。如果您不想深度复制 CombinedFragment
,您可以使用 shared_ptr
。
此外,Node
的默认 ctor 可能甚至不需要存在(它使 cfrag
处于未初始化状态)。
关于c++ - C++ 中的 vector 初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10367605/