C++关于为Vector <Point> myVariable赋值

use*_*897 0 c++

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)

我得到分段核心转储,设置值向量的元素有什么问题.

谢谢你的指导!

jog*_*pan 5

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.这是将新创建的元素附加到向量的最有效方法.