首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在vector<Point> y中转换vector<vector<Point> >x

在vector<Point> y中转换vector<vector<Point> >x
EN

Stack Overflow用户
提问于 2012-04-03 17:07:23
回答 2查看 1K关注 0票数 2

我有一个vector < vector < Point> > X,并希望将其中的所有元素复制到一个vector < Point > Y中(如果可能的话,按照相同的顺序),我尝试了类似于(在for循环中)的方法:

代码语言:javascript
复制
Y.push_back(i) = X.at(i).at(i);

但很明显它不起作用。

我也发现了这一点(在stackoverflow上),但它对我来说并不起作用……

代码语言:javascript
复制
for (std::vector<std::vector<Point> >::iterator it = X.begin(), itEnd = X.end(); it != itEnd; ++it)
    Y.push_back((*it));

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-03 17:11:26

代码语言:javascript
复制
for(vector<vector<Point> >::iterator it = X.begin(); it != X.end(); ++it)
     Y.insert(Y.end(), it->begin(), it->end());

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

票数 5
EN

Stack Overflow用户

发布于 2012-04-03 17:10:06

代码语言:javascript
复制
 Y.push_back(i) = X.at(i).at(i);

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

代码语言:javascript
复制
 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?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9990220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档