变换矢量<vector <point>&gt;向量中的x <点> y </point> </vector <point>

时间:2012-04-03 09:07:23

标签: c++ vector

我有一个vector < vector < Point> > X,并希望将其中的所有元素复制到vector < Point > Y(如果可能,也会以相同的顺序复制) 我尝试过(在for循环中):

Y.push_back(i) = X.at(i).at(i);

但很明显它不起作用......

我也发现了这个(在stackoverflow上),但它对我来说也不起作用......

for (std::vector<std::vector<Point> >::iterator it = X.begin(), itEnd = X.end(); it != itEnd; ++it)
    Y.push_back((*it));

但是编译器告诉我“在重载中没有函数实例”(老实说,我甚至不知道它是什么意思)。

2 个答案:

答案 0 :(得分:5)

for(vector<vector<Point> >::iterator it = X.begin(); it != X.end(); ++it)
     Y.insert(Y.end(), it->begin(), it->end());

如果你知道结果向量的大小,你可以在循环之前调用Y.reserve(finalYSize)

答案 1 :(得分:0)

 Y.push_back(i) = X.at(i).at(i);

这会从向量i中获取元素i。如果要复制所有元素:

 vector<vector<Point> > X;
 vector<Point> Y;
 //....
 for ( int i = 0 ; i < X.size() ; i++ )
    for ( int j = 0 ; j < X[i].size() ; j++ )
       Y.push_back(X[i][j]);

编辑:根据评论和其他答案,在这个问题中也可以找到更多C ++ - 这样做的方法 - What is the best way to concatenate two vectors?