C++ 矢量数组错误
c++ vector array error
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
相关文章:
- "错误:数组下标的无效类型'float [10001][float]'是什么意思?
- 错误:数组下标的类型"const bool[int]"无效
- Qt并发错误:数组初始化需要大括号括起来的初始值设定项列表
- 使用GCC 4.8构建错误:数组用作初始化器
- 如何修复问题中的"teminated due to timeout"错误 数组操作 |黑客兰克?
- | 9 |错误:非静态数据成员'matrix :: row'| 9 |错误:数组绑定不是在']']'令牌|之前的整数常数
- 错误:数组的总大小不得超过0x7fffffff字节
- 错误:无法将参数“1”的“double*”转换为“double”,错误:数组下标的类型“double[double]”无
- 返回并强制转换数组指针(错误:数组下标的类型..无效)
- 返回c++中的字符错误数组
- VC++错误:数组实例化的大小来自模板化的静态常量
- c++mex错误:数组下标的类型“double[mwSize]”无效
- 错误数组用作初始值设定项,我不知道错误
- 编译错误 - 数组下标'char[int]'的类型无效
- 向量在我的类中.错误:数组new [-fpermissive]中的圆括号初始化项
- 错误:数组下标的类型无效
- 错误:数组new中的size必须是整型[-fpermissive]
- 错误:数组下标的“Pixel*[__complex__ int]”类型无效
- c++错误数组显示
- C++:错误:数组下标的类型“size_t{aka long unsigned int}[size_t{aka long