2012-04-28 81 views
-1

可能重复:
Vector Initialisation in C++矢量C++错误

我用我的代码矢量。

,导致该错误的行如下所示:

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.push_back(temp_node); 

导致运行时错误。然而,如果我初始化一些初始大小的载体如下:

vector alt_seq(1000); 在这种情况下,代码工作正常。不过,我不想给出初始大小,因为矢量中的对象数量在运行时将是可变的。请帮帮我。我是新的C++。

供您参考完整的方法函数是在这里:

http://pastebin.com/2dUFEui5

定义为类节点的位置:

http://pastebin.com/zDbJikK7

+0

什么是'alt_itr'? – juanchopanza 2012-04-28 22:52:13

+0

alt_itr是一个节点对象向量的迭代器 – 2012-04-28 22:54:33

+0

你可以发布它引起的运行时错误吗? – vguzmanp 2012-04-28 22:55:09

回答

0

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

+0

是的,但是现在的代码有什么问题? – 2012-04-28 23:03:29

0

您在节点的copy constructor和赋值运算符中使用默认值错误。 向量在重新分配时在其中复制数据,并且该复制操作正在使用相同的cfrag成员生成多个节点。