C++ 我的代码中是否有错误,因为它没有给出正确的输出
错误正好出现在该删除(\up)处。我不明白为什么会发生此错误您有一个向量越界错误(和其他错误) 在你的职责范围内C++ 我的代码中是否有错误,因为它没有给出正确的输出,c++,c++11,C++,C++11,错误正好出现在该删除(\up)处。我不明白为什么会发生此错误您有一个向量越界错误(和其他错误) 在你的职责范围内 #endif ::operator delete(__p); } size_type 如果n为奇数,则当i等于n时,p[i]为越界错误 同样的问题 for (int i = 3; i <= n; i += 2) { p[i] = 1; } 用于(ll j=i*i;j Read and.Use Out-bound error不应该存在
#endif
::operator delete(__p);
}
size_type
如果n
为奇数,则当i
等于n
时,p[i]
为越界错误
同样的问题
for (int i = 3; i <= n; i += 2)
{
p[i] = 1;
}
用于(ll j=i*i;j Read and.Use Out-bound error不应该存在,因为向量的大小我已经定义为n+1
,但感谢我在这里按值传递了向量,这是主要的问题。现在就完成了。@Avinashkumar不,你错了。你创建了n+1的向量,但随后将n+1传递给了函数。所以
void prime_sieve(vector<int> p, int n)
for (int i = 3; i <= n; i += 2)
{
p[i] = 1;
}
for (ll j = i * i; j <= n; j = j + i)
p[j] = 0;