用于2D矢量的C ++插入命令不起作用

时间:2013-11-30 15:43:47

标签: c++ arrays vector

我的程序很长,所以我只想简化有问题的代码:

class C{...};

vector<vector<C>> A;
vector<C> B;

int i = 0;
cin >> i;

A.insert(A.begin()+i, B); 

这里,当我将最后一行更改为“A.push_back(B);”或者“A.insert(A.begin()+ 0,B),运行时错误消失了,因此我怀疑问题是2d矢量大小和位置。但我只想将矢量B插入仅在特定位置的2d矢量A!请帮助:'(

1 个答案:

答案 0 :(得分:0)

你的矢量大小为零。

虽然向量是“动态”结构,但它们并不是自成一体的。访问当前边界之外的元素将导致未定义的行为。

如果您希望向量至少包含i个元素,则可以在插入之前执行此操作。

if (i < A.size())
  A.resize(i)