#include<bits/stdc++.h>
using namespace std;
int main()
{
vector <int> v;
vector<int> :: iterator ip;
v.push_back(2);
for(int i=3;i<=32000;i+=2)
{
int top;
top = sqrt(i)+1;
int flag=0;
if(*ip>top) break;
if(i%*ip==0)
{
flag=1;
break;
}
if(flag==0)
{
v.push_back(i);
}
}
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
cout<<v.at(n)<<endl;
}
return 0;
}
你可以解释一下为什么我的代码会出现运行时错误。 矢量的大小超出范围? 我不知道为什么我在这段代码中得到了错误的答案,尽管我的代码非常好。
答案 0 :(得分:2)
您正在取消引用未初始化的迭代器,您需要更多类似的内容:
vector<int>::iterator ip = v.begin();