推回矢量矢量有什么问题吗?喜欢
typedef vectorPolygon; vector polys; polys.push_back(some_poly);
some_poly中的所有元素都会被复制好吗?
我的代码中有一个错误,我似乎无法弄清楚它有什么问题.
对,矢量按预期复制.有一个很好的软件geordi可以显示:
{ using namespace tracked; typedef vector poly_t; poly_t poly(3); // contains 3 B's vectorv; v.push_back(poly); }
它跟踪创建/复制tracked::B
.这是输出:
B0* B1*(B0) B2*(B0) B3*(B0) B0~ B4*(B1) B5*(B2) B6*(B3) B4~ B5~ B6~ B1~ B2~ B3~
当我们只跟踪时输出v.push_back
:
B4*(B1) B5*(B2) B6*(B3)
如您所见,首先将B0创建为向量构造函数的默认参数.然后将该对象复制到3个B中,然后在构造函数返回时再次销毁B0.poly然后被创建.然后,我们将它推回到多边形向量中.参数poly被复制到一个新的向量中,该向量在多边形向量中创建并由其管理.
如果崩溃,问题可能在于程序的另一部分.检查复制构造函数/构造函数和析构函数是否正常工作,如果使用动态内存分配,则不会删除两次.