为什么矢量的大小超出范围

时间:2014-10-08 16:47:11

标签: c++

#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;
}

你可以解释一下为什么我的代码会出现运行时错误。 矢量的大小超出范围? 我不知道为什么我在这段代码中得到了错误的答案,尽管我的代码非常好。

1 个答案:

答案 0 :(得分:2)

您正在取消引用未初始化的迭代器,您需要更多类似的内容:

vector<int>::iterator ip = v.begin();