C++ 输入崩溃(C+;+;)

C++ 输入崩溃(C+;+;),c++,input,crash,C++,Input,Crash,您好,我已经编写了一个代码,但是如果我想在输入代码后运行代码,它就会崩溃。 程序应该从一个向量中选择前10个,选择最高的一个,然后销毁之前的所有内容,然后重新填充,直到它再次变长10个。 我用了一个for循环来实现这一点。我刚开始做这件事有两个月了 #include <iostream> #include <algorithm> #include <vector> #include <iterator> using namespace std;

您好,我已经编写了一个代码,但是如果我想在输入代码后运行代码,它就会崩溃。 程序应该从一个向量中选择前10个,选择最高的一个,然后销毁之前的所有内容,然后重新填充,直到它再次变长10个。 我用了一个for循环来实现这一点。我刚开始做这件事有两个月了

#include <iostream>
#include <algorithm>
#include <vector>
#include <iterator>

using namespace std;
int main()
{
int Aantal;
cin >> Aantal;
vector<int> F(Aantal);
for(int i=0; i<Aantal; i++)
{
cin >> F[i];
    if(Aantal>1000)
    {
        cerr << "You're above 1000" << endl;
        return -1;
    }
    if(Aantal<20)
    {
        cerr << "You're below 20" << endl;
        return -1;
    }
    if(i>Aantal)
        {
            cerr << "Not above 'Aantal'" << endl;
            return -1;
        }
    if(i<0)
        {
            cerr << "Not smaller than 0!" << endl;
            return -1;
        }
}
for(int z=0; z<Aantal; z++)
{
if(z == 0){
    int a = 0;
}
int a;
vector<int> arr(F.begin()+a, F.begin()+10+a);
int c = *max_element(arr.begin(), arr.end());
cout << c << endl;
vector<int>::iterator q;
q = find(arr.begin(), arr.end(), c);
int pos = distance(arr.begin(), q);
arr.erase(arr.begin(),arr.begin()+pos);
int a1 = 10-arr.size();
int b = a+a1;
a = b;
if(a+10>Aantal)
    {
    break;
    }
arr.erase(arr.begin(), arr.end());
#包括
#包括
#包括
#包括
使用名称空间std;
int main()
{
国际航空公司;
中国>>安塔尔;
载体F(Aantal);
对于(int i=0;i>F[i];
如果(安塔尔>1000)
{
cerr您的问题在于:

int a;
vector<int> arr(F.begin()+a, F.begin()+10+a);

因为所有这一切都是将
a
设置为零,然后您丢弃在if块中声明的
a

您能解释一下我们在这里要做什么吗?
for(int z=0;zI想继续计数吗?我应该怎么做?我需要一个删除和重新填充向量的解决方案。
for(int z=0; z<Aantal; z++)
{
if(z == 0){
    int a = 0;
}