将该向量的元素推入结构的向量中

Pushing into a vector of struct an element of that vector

本文关键字:向量 结构 元素      更新时间:2023-10-16

我已经声明了这样一个结构:

struct Point{
    double x,y;
    Point(){}
    Point(double xx,double yy): x(xx),y(yy){}
};

我正在尝试填充向量,如下所示:

vector<Point> s(1);
Point tmp(1,2);
s[0]=tmp;
s.push_back(s[0]);

不幸的是,当我显示s[1]的内容时,这样做会给我一个错误的答案,但s.push_back((Point)s[0])会导致预期的答案(例如s[0]的副本)。

两者之间有什么区别CCD_ 2和CCD_

引擎盖下面有什么自动类型的转换吗?

push_back通过常量引用获取参数(通过右值引用获取其他重载),因此

s.push_back(s[0]);

使用第一个元素的左值引用,但是,如果容量不够大,push_back可能会重新分配。因此,从s[0]中提取的引用处于悬空状态,不再可行。

在的另一边

s.push_back((Point)s[0]);

创建一个临时的,然后不再使用s[0],允许在vector中推送一个有效的Point