我的程序很长,所以我只想简化有问题的代码:
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!请帮助:'(
答案 0 :(得分:0)
你的矢量大小为零。
虽然向量是“动态”结构,但它们并不是自成一体的。访问当前边界之外的元素将导致未定义的行为。
如果您希望向量至少包含i
个元素,则可以在插入之前执行此操作。
if (i < A.size())
A.resize(i)