向量C ++错误

时间:2012-04-28 22:47:50

标签: c++ stl vector

  

可能重复:
  Vector Initialisation in 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,如下所示:

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

以下是完整的方法功能供您参考:

http://pastebin.com/2dUFEui5

类节点的定义如下:

http://pastebin.com/zDbJikK7

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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