我有一个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));
但是编译器告诉我“在重载中没有函数实例”(老实说,我甚至不知道它是什么意思)。
答案 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?