Помощь с векторами смешивания C++
#include<iostream> #include<vector> using namespace std; vector<int> mix(vector<int> v1, vector<int> v2) { vector<int> newVec{v1.at(0), v2.at(0)}; if(v2.size()+2>1){ vector<int> restV1(v1.begin() + 1, v1.end()); vector<int> restV2(v2.begin() + 1, v2.end()); vector<int> call_vec = mix(restV1, restV2); newVec.reserve(newVec.size()); vector<int> newVeca=newVec; for(size_t i(0);i<newVeca.size();i++){ cout<< newVeca[i]<< "|"; } } return newVec; } int main() { vector<int> v1{1,2,3,4}; vector<int> v2{5,6,7,8}; mix(v1,v2); return 0; }
Что я уже пробовал:
Эй, все до единого !!!
У меня есть это домашнее задание, что нам нужно сделать его без петли, и у меня есть проблемы с пониманием, буксирная вещь здесь
1 - Почему new-Vec находится не в правильном порядке (это из-за рекурсии или чего-то еще, что я сделал неправильно в своем коде )
2 - я не смог получить последнее буксирное целое число в add the new integer
каждый раз, когда я пытаюсь увеличить размер в if ( if(v2.size()+2>1)), я получаю эту ошибку:
(terminate вызывается после создания экземпляра 'std::out_of_range'
что(): вектор::_M_range_check: __Н (который 0) &ГТ;= это-&ГТ;размер() (который является 0))
Напишите функцию, которая получает два вектора значений int в качестве параметров и возвращает вектор значений int в качестве возвращаемого значения. Возвращаемый вектор всегда должен содержать попеременно значение из первого параметра и значение из второго параметра (начиная с первого значения из первого параметра). Относительный порядок значений в результирующем векторе должен быть таким же, как и во входных векторах. Если два входных вектора имеют разную длину, то остальная часть более длинного вектора остается неизменной
Параметр: Ergebnis:
{1,2,3} {4,5,6} {1,4,2,5,3,6}
{1,2,3,4,5,6} {7,8,9} {1,7,2,8,3,9,4,5,6}