运行时错误:vector下标超出范围

Runtime Error: vector subscript out of range

本文关键字:范围 下标 vector 运行时错误      更新时间:2023-10-16

所以,我写了下面的代码:

int main()
{
int max;
cin >> max;
vector<int> nums;
for (int i = 2; i <= max; i++)
{
    nums.push_back(i);
}
for (int i = 2; i <= max/10; i++)
{
    for (int j = i; j <= max; j += i)
    {
        nums[j - 2] = nums.back(); // problem maybe here
        nums.pop_back();
    }
}
for (int x : nums)
{
    cout << x << "n";
}
}

在输入max值后得到运行时错误。我包括iostream, string, vector, algorithm, cmath和使用命名空间std.我不知道问题在哪里。

为什么不放各种语句

cout << "vector size is " << nums.size() << 'n';

放入你的代码中,并可能在你的循环中看到j是什么。

您将看到下标在哪里超出了范围。注意,每次你做nums.pop_back()的时候你都在减少向量的大小1。这发生在你的内循环