Ragazzi, ho provato a fare quest'esercizio:

Scrivere una funzione

vector<int> merge(vector<int> a, vector <int> b)

che unisca due vettori, alternando elementi di entrambi. Se un vettore è di dimensioni minori, eseguire l'alternanza finché possibile e aggiungere gli elemtn restanti del vettore più lungo. Se per esempio, a é

1 4 9 16

e b é

9 7 4 9 11

merge restituirà il vettore

1 9 4 7 9 4 16 9 11

Io ho scritto la funzione così:

codice:

vector <int> merge (vector <int> a, vector <int> b)

{
   vector <int> c (a.size()+ b.size());
   int j = 0;
   int i;
   int k = 1;
   int temp;

   if (a.size() < b.size())


{

       c[0] = a[0];
       c.push_back (a[0]);


        for (i=1; k < c.size()-1;i=i++)

        {
        while (i<a.size()-1)
        {a[i] = temp;
        c[i+1] = temp;
        c.push_back(temp);}
        c[k] = b[j];
        c.push_back(b[j]);
        j++;
        k = k+2;} return c;
}

else

if (b.size() < a.size())


{

       c[0] = b[0];
       c.push_back (b[0]);


        for (i=1; k < c.size()-1;i=i++)

        {
        while (i<b.size()-1)
        {b[i] = temp;
        c[i+1] = temp;
        c.push_back(temp);}
        c[k] = a[j];
        c.push_back(a[j]);
        j++;
        k = k+2;} return c;
}



}
Solo che non se se funziona, perchè il compilatore compila tutto correttamente, però poi quando lancio l'eseguibile, non mi dà nessun valore di ritorno... Come mai? Cosa ho sbagliato?