C++关于为Vector myVariable赋值
嗨,大家好.
我有这个结构
struct Point
{
int x,y;
}
Run Code Online (Sandbox Code Playgroud)
在我的main.cpp中我得到了类似的东西
int main()
{
vector<Point> myPoints;
myPoints[0].x = 1;
myPoints[0].y = 1;
myPoints[1].x = 2;
myPoints[1].x = 2;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我得到分段核心转储,设置值向量的元素有什么问题.
谢谢你的指导!
vector<Point> myPoints;
Run Code Online (Sandbox Code Playgroud)
创建一个空的Point对象矢量.因为它是空的,你不能访问myPoint[0],myPoint[1]等试图做到这一点不会自动创建元素; 相反,它会调用未定义的行为 - 通常是一个分段错误.
使用push_back附加元素的矢量:
myPoints.push_back(Point(1,1));
Run Code Online (Sandbox Code Playgroud)
或者,或者,调整向量的大小,使其包含默认构造的元素:
myPoints.resize(2);
Run Code Online (Sandbox Code Playgroud)
您还可以使用构造函数的参数std::vector在初始化时调整大小:
vector<Point> myPoints(2); // auto-resizes the vector to length 2
Run Code Online (Sandbox Code Playgroud)
请注意push_back.在C++ 11中,您可以使用emplace_back()而不是push_back():使用作为构造函数的参数,通过就地myPoints.emplace_back(1,1);调用Point构造函数将新元素附加到向量1,1.这是将新创建的元素附加到向量的最有效方法.