C++ 向量C++;错误

C++ 向量C++;错误,c++,stl,vector,C++,Stl,Vector,可能重复: 我在代码中使用向量 导致错误的行如下所示: vector<Node> alt_seq ; 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(1000); 在这种情况下,代码

可能重复:

我在代码中使用向量

导致错误的行如下所示:

vector<Node> alt_seq ;
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(1000); 在这种情况下,代码工作正常。但是,我不想给出初始大小,因为向量中的对象数在运行时是可变的。请帮帮我。我是新的C++。 完整的方法功能如下所示,供您参考:

类节点的定义如下:


考虑到std::vector是动态调整大小的。初始值只是一个初始值,但如果您存储2000个元素,它将增长以适应它们(尽管由于重新分配,效率会降低)。

您使用默认的节点和赋值运算符时犯了错误。
Vector会在重新分配时复制其中的数据,而该复制操作会生成具有相同cfrag成员的多个节点。

alt_itr是节点对象向量的迭代器。您可以发布它导致的运行时错误吗?行
alt_seq=Vector不会导致错误吗?这显然是非法的,因为向量alt_seq已初始化
alt_seq
。很抱歉,我更正了有问题的代码,我在代码中键入了错误的一行。您现在看到的代码就是导致错误的代码。我使用代码::块。因此,当我编译和运行时,它会在两者之间崩溃。如果我注释掉alt_seq.push_back(temp_节点),代码就会工作,否则就会崩溃。或者,如果我给矢量一个初始大小,它也可以工作。是的,但是当前代码有什么问题吗??
alt_seq.push_back(temp_node);