C ++ - 没有获得预期的输出到控制台

时间:2018-04-19 00:08:15

标签: 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<vector<point>> v;

  v[0].push_back(coord);

  cout << "hello" << endl;

  return 0;
}

1 个答案:

答案 0 :(得分:1)

你的矢量矢量大小为0,绝对没有。因此,当你告诉一个不存在的向量用一些数据推回时,周围的内存就会发生奇怪的事情。在这种情况下(如果我错了,请更正我),您最终会跳过/覆盖包含调用cout <<的说明的区域。

#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;
}