我不明白我做错了什么。我的代码应该只是从0增加I:0.1,并在每个位置增加0.5,这真的很简单,但是我得到的却是segmentation fault(core dumped)
。
有人能帮我一下吗?
vector<float> sinal;
int main(){
sinal[0] = 0;
for (float i = 0.1; i <= 1; i += 0.1){
sinal[i] = sinal[i - 1] + 0.5;
if (i == 1){
break;
}
cout << "\n" << sinal[i];
}
getchar();
cin.get();
}
这里有两个问题:
1.访问sinal[0]
和sinal[i]
时,sinal
还没有任何容量。
2.使用浮点数作为下标是不寻常的,可能会导致错误发生。下标通常是要访问的项的偏移量,因此如果我要访问第五个元素,我使用4
的下标,因为我将4
空格前移到第五个元素。如果我使用1.5
作为下标,那么我正在尝试向前移动1
和1/2
空格,而我们的std::vector
不理解这一点。我猜vector的operator[]
重载只需要一个int
,所以当您放一个float时会发生某种类型的强制转换。
对于一个解决方案,看看我这里的另一个答案:在字符串的情况下不获取输出。
“core dumped”通常尝试取消引用null
指针,或者,在本例中,尝试访问超出范围的对象。