在向量v
中,数字是:2 6 9
n
是数组中元素的数量。 l
和r
是索引(基于 1 的索引),我必须从向量中删除元素
vector<int> v(n, 0);
for (int i = 0; i < n; i++)
{
int x;
scanf("%d", &x);
v[i] = x;
}
while (q--)
{
int l, r, ans = 0;
scanf("%d", &l);
scanf("%d", &r);
vector<int> v1 = v;
if (l == r)
v1.erase(v1.begin() + (l - 1));
else
v1.erase(v1.begin() + (l - 1), v1.begin() + r);
当我在这里打印矢量时,我得到:
6 9 9
如果l
是1
并且r
是1
,我只想删除第一个元素,如果l
是2
并且r
是3
,我会得到2 6 9
,但我想删除从第二个索引到第三个索引的元素:
for (int i = 0; i < n; i++)
printf("%dn", v1[i]);
rep(i, n)
{
ans = gcd(ans, v1[i]);
}
printf("%dn", ans);
}
将
打印vector
的for
循环更改为for(int i = 0; i < v1.size(); i++)
。您当前正在删除元素,然后尝试打印它们,这是未定义的行为。更改for
循环可以纠正这一事实。