矢量超出范围,但为什么
vector is out of range,but why?
它说我的向量超出了ArrayD的范围。但我不明白为什么。其他一切都有效。Is表示向量在双deez之后超出范围。因此,它不会完全提升。
使用命名空间std;
void hello((;
void Infile((;
双x,y,z;
双p,B;
int E=0;
双V[16];
双C[16];
双D[16];
int m,n;
int main((
{
Infile();
return 0;
}
void Infile((
{
ifstream fileA("P_matrix.txt");
ifstream fileB("b_matrix.txt");
ifstream fileC("d_matrix.txt");
vector<double>ArrayP;
vector<double>ArrayB;
vector<double>ArrayD;
cout << "P Matrix Values n";
while (fileA.good())
{
fileA >> P;
ArrayP.push_back(P);
}
for (int i = 0; i<ArrayP.size(); i++)
{
cout << ArrayP[i] << ",";
}
system("pause");
cout << "B Matrix Values n";
while (fileB.good())
{
fileB >> B;
ArrayB.push_back(B);
}
for (int j = 0; j < 16; j++)
{
cout << ArrayB[j] << ",";
}
system("pause");
while (fileC.good())
{
fileC >> D;
ArrayD.push_back(D);
}
for (int k = 0; k <16; k++)
{
cout << ArrayD[k] << ",";
}
system("pause");
for (int m = 0; m < 16; m++)
{
V[m] = ArrayP[m] * ArrayB[m];
cout << V[m] << ",";
}
system("pause");
for (int n = 0; n < 16; n++)
{
C[n] = V[n] * ArrayD[n];
cout << C[n] << ",";
}
//outfile.close();
system("pause");
double deez;
for (int d = 0; d < 16; d++) //acscending
{
for (int q = 0; q < 16; q++)
{
if (ArrayD[q] < ArrayD[q - 1])
{
deez = ArrayD[q];
ArrayD[q] = ArrayD[q - 1];
ArrayD[q - 1] = deez;
}
}
}
for (int q = 0; q < 16; q++)
cout << C[q] << ",";
system("pause");
double nutz;
for (int d = 0; d < 16; d++) //descending
{
for (int q = 0; q < 16; q++)
{
if (V[q] < V[q + 1])
{
nutz = V[q];
V[q] = V[q + 1];
V[q + 1] = nutz;
}
}
}
for (int q = 0; q < 16; q++)
cout << V[q] << ",";
system("pause");
return;
}
这里,q从零开始,所以您正试图访问索引[-1]。
ArrayD[q - 1]
在ArrayP上迭代时,您正确地执行了以下操作:
for (int i = 0; i<ArrayP.size(); i++)
然而,对于ArrayB和ArrayC,您似乎认为这些数组中只有16个元素(您确定吗?(。我看不到任何证据表明数组的代码中总是有16个元素,所以这也可能是问题所在。
稍后,您似乎假设所有这些数组都有16个元素?
for (int m = 0; m < 16; m++)
{
V[m] = ArrayP[m] * ArrayB[m];
cout << V[m] << ",";
}
这些明显的地方可能会导致超出范围的错误。
相关文章:
- 为什么在全局范围内使用"extern int a"似乎不行?
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 关于:C++中异常对象的范围:为什么我没有得到副本?
- 为什么我的变量存在于其范围之外
- 为什么 gcc 会给我可能未初始化的警告 deque::insert 带有过滤范围
- 为什么范围算法与 std 的迭代器不兼容?
- 为什么这个正则表达式C++在括号表达式中抛出无效范围异常?
- 为什么 C++20 范围不只提供管道语法?
- 矢量超出范围,但为什么
- 为什么基于范围类型的大括号上循环init列表是非法的c++
- 为什么 gcc 警告只针对统一初始化缩小转换范围?
- 为什么基于范围的 for 循环中的结构化绑定只是一个副本而不是引用?
- 为什么当我的代码超出函数范围时,"does not name a type"出现编译器错误?
- 为什么我的 RLE 代码显示标准超出 C++ 的范围?
- 在遍历字符串时,为什么我没有超出范围错误,即使我已经超出了它的长度?
- 为什么范围V3产量需要默认构造函数
- 为什么范围解析运算符在类外给出错误
- 为什么范围 v3 算法不可管道化?
- unordered_map:为什么范围操作效率低下,情况就是这样
- 为什么范围基本循环不适用于堆中的数组,但适用于堆栈中的数组