2017-09-28 3 views
0

Ainsi, le but de la fonction est d'ajouter des nombres impairs au tableau entre 1 et un entier fourni (inclus). Cela semble être une tâche simple, cependant, je n'arrive pas à l'obtenir pour ajouter correctement les entiers au tableau réel. La fonction elle-même n'est pas const, donc ne devrait-elle pas ajouter des valeurs au tableau avec succès?Push_back nombres impairs

EDIT: Tout est fait dans un main, donc c'est ici.

int main() 
{ 
    std::vector<int> loli(100); 

    populate(loli, 31); 


    for (int value : loli) 
    { 

     std::cout << value << " "; 
     system("pause"); 
    } 
} 

EDIT 2: J'ai essayé d'ajouter une instruction return à la place, mais j'ai toujours le résultat zéro.

std::vector<int> populate(std::vector<int> ary, int a) 
{ 
    for (int i = 1; i <= a; i++) 
    { 
     if (i % 2 != 0) 
     { 

      ary.push_back(i); 
     } 

    } 
    return ary; 
} 



int main() 
{ 

    std::vector<int> loli(100); 




    for (int value : populate(loli, 31)) 
    { 

     std::cout << value << " "; 
     system("pause"); 
    } 



} 

Répondre

1

Votre fonction doit soit retourner le tableau final après la boucle ou vous devez passer le tableau en tant que pointeur vers la fonction.

+1

std :: vector Populate (std :: vecteur Ary, int a) { \t for (int i = 1; i <= a; i ++) { \t \t \t si (i% 2! = 0) { \t \t \t \t \t \t \t \t ary.push_back (i); \t \t} \t \t \t} \t retour (aire); } comme ça? – Granzo

+0

Oui. Sans la déclaration de retour, votre fonction ne retournera rien et lorsque vous appelez la fonction, elle ne fera rien. En outre, lorsque vous appelez la fonction, vous devez enregistrer la valeur renvoyée dans une variable – Heapify

+0

Cela ne fonctionne toujours pas pour une raison quelconque. – Granzo