C++ 矢量数组错误

c++ vector array error

本文关键字:错误 数组 C++      更新时间:2023-10-16
int main()
{
    int n, inInt;
    vector <int> list;
    ifstream ifs("1.txt");
    float a;
    ifs >> a;
    std::vector<int> result;
    int temp;
    while(! ifs.eof())
    {
        ifs >> temp;
        result.push_back(temp);
    }
    int b;
    b = result.size();
    float array[b+1];
    int i;
    array[0] = a;
    for(i = 1;i < b+1;i++) {
        array[i] = (array[i-1] + result[i]-2*array[i-1] * result[i]/a); 
    }
    cout << array[b];
    system("pause");
    return 0;}
基本上在我的代码中,我构建了一个向量并

构建了一个数组,并尝试使用数组中向量中的数据。但是,当我发短信代码时,它给了我一个巨大的错误数字。

temp不是

数组,temp是整数。您正在尝试在 int 上使用 operator[],但您无法这样做。此外,VLA(可变长度数组(是GCC扩展,因此不是标准的。我建议你替换这一行:

float array[b+1];

跟:

std::vector<float> array(b+1);

我至少看到两个问题。首先,您的输入循环不正确,并在result中插入了无效的条目。可以使用以下输入循环来解决此问题:

while (ifs >> temp)
{
    result.push_back(temp);
}

其次,向量result包含b元素,因此有效索引[0..b-1]。您的循环结束条件 i < b+1 将读取一个超过result末尾的元素。我认为您可以通过执行此操作来解决此问题:

for(i = 0; i < b; i++)
{
    array[i+1] = (array[i] + result[i]-2*array[i] * result[i]/a);
}

当我进行这些更改并使用3 2 2进行输入时,输出1.66667