您好我已经编写了代码,但如果我想在输入代码后运行代码,它就会崩溃。 程序应该选择向量中的前10个,选择最高的向量并在此之前销毁所有内容并重新填充,直到它再次长达十年。 我用过for循环来做到这一点。我刚刚开始这个2个月了。
#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());
答案 0 :(得分:0)
你的问题在这里:
int a;
vector<int> arr(F.begin()+a, F.begin()+10+a);
您创建变量a
,从不初始化它,然后使用它来构造向量。由于a
有一个垃圾值,这将导致矢量创建变得混乱,因为你很可能会得到错误的位置。
我不确定你之前做了什么:
for(int z=0; z<Aantal; z++)
{
if(z == 0){
int a = 0;
}
正如所做的那样,将a
设置为零,然后丢弃{if}块中声明的a
。