我有一个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));但是编译器告诉我“在重载中没有函数的实例”(老实说,我甚至不知道这是什么意思)。
发布于 2012-04-03 17:11:26
for(vector<vector<Point> >::iterator it = X.begin(); it != X.end(); ++it)
Y.insert(Y.end(), it->begin(), it->end());如果您知道结果向量的大小,那么可以在循环之前调用Y.reserve(finalYSize)。
发布于 2012-04-03 17:10:06
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?
https://stackoverflow.com/questions/9990220
复制相似问题