-1

可能重复:
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);

导致运行时错误。但是,如果我用一些初始大小初始化向量,如下所示:

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

供您参考完整的方法功能在这里:

http://pastebin.com/2dUFEui5

类节点的定义在这里:

http://pastebin.com/zDbJikK7

4

2 回答 2

0

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

于 2012-04-28T23:02:00.363 回答
0

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

于 2012-04-29T04:04:40.843 回答