我的代码显示矢量下标超出范围
my code displays Vector subscript out of range
我知道这段代码可能很丑陋,但我对编程真的很陌生,当我尝试运行它时,它告诉我 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
相关文章:
- 尝试通过多个向量访问变量时,向量下标超出范围
- 矢量下标超出SFML游戏中的范围
- 运行时错误:矢量下标超出范围:正在检查空集
- 如果变量数据包含大于 vector 所有元素的整数,则仅在视觉工作室上接收"矢量下标超出范围"?
- 编译期间矢量下标超出范围
- C++ 调试断言失败 - 矢量下标超出视觉工作室的范围
- 对矢量来说是全新的.矢量下标超出范围
- C++十进制到十六进制(字符串下标超出范围)
- 创建结构体向量,表达式:向量下标超出范围
- 读取矢量时矢量下标超出范围
- 断言失败错误,C++中的矢量下标超出范围问题
- 如何在 Linux 上强制执行矢量下标超出范围的调试断言
- 表达式:矢量下标超出范围
- 矢量下标超出范围,带有嵌套的 for 循环
- 向量下标超出向量向量的范围
- gcc8.2如何启用警告:数组下标在数组范围之上[-warray-bounds]
- 向量下标出的范围错误.即使向量的索引大于访问数据的索引,也会发生误差
- std::vector<std::vector<int>>:调试断言失败。C++矢量下标超出范围保留内存
- 重命名两个目录中的文件名,如果它们之间的某些字符匹配 - 矢量下标超出范围
- 行进立方体重建 - 向量下标超出范围