преобразовать векторх в векторе <Point>у - PullRequest
2 голосов
/ 03 апреля 2012

У меня есть 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 ]

5 голосов
/ 03 апреля 2012
for(vector<vector<Point> >::iterator it = X.begin(); it != X.end(); ++it)
     Y.insert(Y.end(), it->begin(), it->end());

Если вы знаете размер результирующего вектора, вы можете вызвать Y.reserve(finalYSize) перед циклом.

0 голосов
/ 03 апреля 2012
 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 ++ - Каков наилучший способ объединения двух векторов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...