我是个白痴,我想知道为什么这个代码不打印,"你好"?如果我注释掉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;
}
答案 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;
}