难以理解一个简单的分段错误.C++

Tek*_*Tek 1 c++

有人能够解释为什么在世界上这会给我一个分段错误错误?

#include <vector>
#include <iostream>

using namespace std;

vector <double>freqnote;

int main(){

freqnote[0] = 16.35;

cout << freqnote[0];

return 0;
}
Run Code Online (Sandbox Code Playgroud)

我在代码中有其他向量,这是唯一似乎给我带来麻烦的向量.

我将其vector<int>freqnote;更改为并将值更改为16并且我仍然得到分段错误.到底是怎么回事?

我有其他矢量整数,他们给我正确的结果.

sta*_*ica 10

更换

freqnote[0] = 16.35;
Run Code Online (Sandbox Code Playgroud)

freqnote.push_back(16.35);
Run Code Online (Sandbox Code Playgroud)

你会没事的

该错误是由于该索引超出范围.在访问第一个元素时[0],向量可能具有0的容量,push_back()另一方面,将扩展向量的容量(如果需要).


Tom*_*mas 7

您不能在这样的矢量中初始化元素.

你得走了:

freqnote.push_back(16.35),
Run Code Online (Sandbox Code Playgroud)

然后像对待数组那样访问它