J'ai un problème de codage à propos d'un exercice "simple" sur le tri de ce qui est à l'intérieur d'un vecteur de n nombres entiers. Le problème est que le compilateur n'accepte pas void en tant que type pour le tri par fonction (et cela doit être une fonction vide). Mais je ne comprends vraiment pas pourquoi. Pour les variables, le type correspond (pointeur < -> v.begin() par exemple) mais pas pour la fonction. Toute aide appréciée! Voici mon code:Erreur sur une fonction vide avec un argument vectoriel
#include <iostream>
#include <vector>
typedef std::vector<int>::iterator Vit;
void sort(Vit begin, Vit end){
int len = end - begin;
for(begin; begin < end; ++begin){
for(int i = 1; i < len; ++i){
if(*begin < *(begin +i)){
*begin = *(begin + i);
}
}
}
std::cout<< "* ";
for(begin; begin < end; ++begin){
std::cout<< *begin<< " ";
}
std::cout<< "*";
return;
}
int main(){
int n;
std::cin >> n;
std::vector<int> v(n);
for(Vit it = v.begin();it != v.end(); ++it){
std::cin >> *it;
}
void sort (v.begin() , v.end());
}
En principal, changer 'void sort (de v.begin(), v.end());' 'à tri (v.begin(), v.end()); –
Correct! Merci beaucoup c'est une erreur vraiment stupide ... Pourriez-vous également m'expliquer pourquoi le code ne fonctionne pas? Il devrait trier les éléments à l'intérieur d'un vecteur. –
Il semble que vous deviez apprendre à utiliser un débogueur pour parcourir votre code. Avec un bon débogueur, vous pouvez exécuter votre programme ligne par ligne et voir où il dévie de ce que vous attendez. C'est un outil essentiel si vous voulez faire de la programmation. Pour en savoir plus: ** [Comment déboguer de petits programmes] (http://ericlippert.com/2014/03/05/how-to-debug-small-programs/) ** – NathanOliver