在C ++中,如果我有一个向量类型的向量,如果我执行以下操作会发生什么:vector variable.push_back()?

时间:2015-02-16 16:24:40

标签: c++ vector std

std::vector<std::vector<Point2d> > components;

Point2d是一个结构:

struct Point2d {
int x;
int y;
};

std::vector<Point2d> tmp;
components.push_back( tmp );// What does this line do?

我知道问题在于我对c ++向量的理解。 据我所知:在上面的代码中,组件是向量的向量。内部矢量是Point2d类型。外部矢量组的内部矢量类型。

在上面的代码中.. Components.push_back(tmp)呢?

2 个答案:

答案 0 :(得分:1)

components的大小增加1. components的最后一个元素是Point2d的向量。此向量是从tmp复制的,它是空的。在push_back操作期间,向量components可能需要重新分配存储,这可以复制其元素并使迭代器无效。

答案 1 :(得分:1)

此行将<{em}}向量推送到向量tmp向量的末尾。

ComponentsComponents,位于std::vector<std::vector<Point2d> >的每个索引处,您可以访问Components

也就是说,如果您std::vector<Point2d> push_backstd::vector<Point2d>)成为空的tmp,则Components的第一个元素将是Components向量。

您可以使用tmp访问此向量。