我的代码显示矢量下标超出范围

my code displays Vector subscript out of range

本文关键字:范围 下标 代码 显示 我的      更新时间:2023-10-16

我知道这段代码可能很丑陋,但我对编程真的很陌生,当我尝试运行它时,它告诉我 Vector 下标超出了范围,我不知道问题出在哪里。我很确定这个错误意味着我在某个地方使用了一个实际上没有为其分配值的向量,但我似乎在任何地方都找不到它。我不知道该何去何从。帮助将不胜感激。

#include<iostream>
#include<cmath>
#include<vector>
 using namespace std;
double altitude(){
double alti;
cout << "Please input altitude in meters:";
cin >> alti;
return alti;
}
double RoC()
{
double climbR;
cout << "Please input climb rate in m/s:";
cin >> climbR;

return climbR;
}
double speed(){
double v;
cout << "Please input your current speed over ground in m/s" << endl;
cin >> v;
return v;
}
//  Gives you the time it will take to reach desired altitude
double time(double A, double R){
double t;
t = A / R;
return t;
}
//Distance travelled horizontally in given time
double distancetravelled(double Veloc, double Time){
double D;
D = Veloc*Time;
return D;
}
//This will convert time to days, hours, minutes, and seconds.
vector<double> time_to_hours_m_s(double input_seconds){
double days;
double hours;
double minutes;
double seconds;
days = input_seconds / 60 / 60 / 24;
hours = (input_seconds / 60 / 60) / 24;
minutes = (input_seconds / 60) / 60;
seconds = (input_seconds) / 60;
//puts values into a vector
vector<double>times;
times[0] = days;
times[1] = hours;
times[2] = minutes;
times[3] = seconds;
return times;

}

void print_vector(vector<int>converted_time){
cout << "The time it will take for the plane to reach its desired altitude is ";
cout << converted_time[0] << " days, ";
cout << converted_time[1] << " hours, ";
cout << converted_time[2] << " minutes and ";
cout << converted_time[3] << " seconds"; 
}

void print_result (double V, double D){
// This is for the distance it will travell horizontally in the time it takes to to climb.
cout << "The distance over ground you will travel will be ";
cout << D << " meters"<<endl;
}



int main(){
vector < double > converted_time;
double A;
double R;
double T;
double V;
double D;
double days = converted_time[0];
double hours = converted_time[1]; 
double minutes = converted_time[2];
double seconds = converted_time[3];
V = speed();
R = RoC();
A = altitude();
T = time(A, R);
D = distancetravelled(T,V);
time_to_hours_m_s(T);
print_result(V, D);
return 0;
}

在访问元素之前,必须将矢量大小调整为适当的大小:

vector< double > converted_time;
//...
double days = converted_time[0]; // no good

您正在访问第一个元素,但向量没有要访问的元素。 解决方法是确保首先调整矢量的大小:

vector< double > converted_time(4);  // created 4 entries