在向量<Point> y中变换向量<vector <Point >> x

Mar*_*sto 2 c++ vector

我有一个 vector < vector < Point> > X并且想要将其中的所有元素复制到一个vector < Point > Y(并且如果可能的话以相同的顺序)我尝试了类似的东西(在for循环中):

Y.push_back(i) = X.at(i).at(i);
Run Code Online (Sandbox Code Playgroud)

但显然它不起作用......

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

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

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

Fox*_*x32 5

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

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

  • 对于不使用c ++ 11的人,在`>>`之间添加一个空格.即:`for(vector <vector <Point >>> :: iterator it = X.begin(); it!= X.end(); ++ it)` (2认同)