c++ - C++ 中的 vector 初始化

标签 c++ stl vector declaration stdvector

我在我的代码中使用 vector 。

导致错误的行如下:

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) ;

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

完整的方法函数供您引用:

http://pastebin.com/2dUFEui5

最佳答案

您的 Node 类有一个类型为 CombinedFragment* 的指针成员,称为 cfrag。如果您没有定义自己的复制构造函数和赋值运算符,则会创建悬空引用。此外,如果 Node 负责分配/取消分配 cfrag,则需要适当的 dtor 来防止泄漏。如果您不想深度复制 CombinedFragment,您可以使用 shared_ptr

此外,Node 的默认 ctor 可能甚至不需要存在(它使 cfrag 处于未初始化状态)。

关于c++ - C++ 中的 vector 初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10367605/

相关文章:

c++ - 为什么 ifndef/endif 之间的代码还能在这里运行?

c++ - 如何更改 wxWidgets 中的字体行距(行距)?

matlab - 向量化冒号的概念(:) - values between two vectors in MATLAB

c++ - vector 初始化,使用 C++ 书中的代码出错

c++ - 3D vector C++ 的循环帮助

c++ - 在 std::chrono 时钟之间转换 time_points

c# - 除非安装了 visual studio,否则无法使用 C++/CLI DLL

python - 使用常量内存旋转 m 个位置左侧的 n 个元素的一维数组?

c++ - 在恒定的 O(1) 时间内连接 2 个 STL vector

c++ - 关于c++中bitset的问题