所以,我写了这段代码:
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,字符串,向量,算法,cmath和使用命名空间std。我不知道问题出在哪里。
答案 0 :(得分:0)
为什么不把各种陈述
cout << "vector size is " << nums.size() << '\n';
进入您的代码并可能在循环期间看到j
。
然后,您将看到下标超出范围的位置。请注意,每次执行nums.pop_back()
时,您的矢量大小都会减少1.这会发生在您的内循环中。