C++ C++;-未将预期输出获取到控制台

C++ C++;-未将预期输出获取到控制台,c++,C++,我是个白痴,我想知道为什么这个代码不打印“你好”?如果我注释掉vector.push_back(),它似乎打印 #include <iostream> #include <vector> using namespace std; struct point { int x,y; point(int x, int y) : x(x), y(y) {} }; int main() { point coord(4,4); vector<vecto

我是个白痴,我想知道为什么这个代码不打印“你好”?如果我注释掉vector.push_back(),它似乎打印

#include <iostream>
#include <vector>

using namespace std;

struct point {
  int x,y;

  point(int x, int y) : x(x), y(y) {}
};

int main() {

  point coord(4,4);

  vector<vector<point>> v;

  v[0].push_back(coord);

  cout << "hello" << endl;

  return 0;
}
#包括
#包括
使用名称空间std;
结构点{
int x,y;
点(intx,inty):x(x),y(y){
};
int main(){
point coord(4,4);
向量v;
v[0]。推回(坐标);

cout你的向量向量大小为0,其中绝对没有任何内容。因此,当你告诉一个不存在的向量用一些数据推回时,周围的内存会发生奇怪的事情。在这种情况下(如果我错了,请纠正我),您将跳过/覆盖包含要调用的指令的区域。
如果您没有构造
v[0]
,您只是给了一个不存在的实体一个命令。这是未定义的行为。
v.at(0)。推回(coord);
将给出一个更有用的错误消息。
#include <iostream>
#include <vector>

using namespace std;

struct point {
    int x,y;

    point(int x, int y) : x(x), y(y) {}
};

int main() {

    point coord(4,4);

    vector<vector<point>> v;

    v.push_back(vector<point>()); // need this one
    v[0].push_back(coord);

    cout << "hello" << endl;

    return 0;
}