У меня есть два вектора, которые я хочу объединить в один.Оба являются встроенными парными векторами (чтобы иметь возможность хранить 3 значения int в одной паре), и их размеры отличаются друг от друга.
Код для двух парных векторов и объединенного вектора:
vector < pair<int, pair<int,int> > > parentVect;
vector < pair<int, pair<int,int> > > childVect;
vector < pair<int, pair<int,int> > > mergedVect;
, где sizeOfFinalVect равен размеру обоих parentVect + childVect.
parentVect = {(0 3 9), (1 3 9), (2 2 15)}
childVect = {(0 1 9)}
Когда я запускаю:
for(int i=0; i<mergedVect.size();i++){
mergedVect.push_back(make_pair(parentVect[i].second.second, make_pair(parentVect[i].second.first, parentVect[i].first)));
}
(я знаю, что forloop не «объединяет» два, я хотел проверить, добавлял ли он по крайней мере добавление в родительские пары в mergedVect)
мой вывод:
mergedVect = {(0 0 0), (0 0 0), (0 0 0)}
Векторы отсортированы по последнему целому числу в паре, поэтому мой желаемый результат:
mergedVect = {(0 3 9), (1 3 9), (0 1 9), (2 2 15)}
Любая помощь по этому вопросу очень ценится!
РЕДАКТИРОВАТЬ:
Использование слияния:
merge(parentVect.begin(), parentVect.end(), childVect.begin(), childVect.end(), std::back_inserter(mergedVect));
мой вывод mergedVect = {(0 1 9), (0 3 9), (1 3 9),(2 2 15)}