[英]Vector Initialisation in C++
我在我的代码中使用Vectors。
导致错误的行如下:
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) ;
在这种情况下,代码工作正常。 但是我不想给出初始大小,因为向量中的对象数量在运行时是可变的。 请帮我。 我是C ++的新手。
供您参考,完整的Method函数在这里:
您的Node
类有一个CombinedFragment*
类型的指针成员,称为cfrag
。 如果您没有定义自己的复制ctor和赋值运算符,则会创建悬空引用。 此外,如果Node
负责分配/解除分配cfrag
,则需要适当的dtor来防止泄漏。 如果您不想深度复制CombinedFragment
,可以使用shared_ptr
。
此外, Node
的默认ctor可能甚至不需要在那里(它将cfrag
为未初始化状态)。
我可以看到一个问题; 当你声明1000个vector
对象,然后执行push_back
你将添加到矢量的末尾,即你想要添加的对象是1001,1002 ......等等。如果声明1000个vector
对象没有t给你一个运行时错误,我首先会看到默认定义是什么(因为前1000个节点对象有默认值),因为这不是错误输出并与我试图加载的实际数据进行比较。 希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.