Et pour trier: std::sort(liste.begin(),liste.end(),ByIndex());
Seulement j'ai une question: y a-t-il moyen de se passer de la ligne CompareByIndex ByIndex() { return CompareByIndex(); } et tout mettre dans la structure?
Bon je me réponds partiellement à moi même:
class foo
{
private:
int index;
public:
foo(int new_index) : index(new_index) {}
bool operator<(const foo & compar) const { return index <
compar.index; }
int Get_Index() const { return index; }
};
Et pour trier:
std::sort(liste.begin(),liste.end(),ByIndex());
Seulement j'ai une question: y a-t-il moyen de se passer de la ligne
CompareByIndex ByIndex() { return CompareByIndex(); } et tout mettre dans
la structure?
Et pour trier: std::sort(liste.begin(),liste.end(),ByIndex());
Seulement j'ai une question: y a-t-il moyen de se passer de la ligne CompareByIndex ByIndex() { return CompareByIndex(); } et tout mettre dans la structure?
Fabien LE LEZ
On 11 Jan 2005 23:39:11 GMT, Michael :
struct CompareByIndex
: public std::binary_function<const foo *, const foo *, bool>
Je n'ai jamais bien su si cet héritage sert à quelque chose ou pas. En tout cas, le "public" n'est guère utile.
"CompareByIndex" est une classe, qu'on peut instancier (i.e. créer des objets "comparateur"), même si dans ce cas précis elle n'a aucune variable membre. Un tel objet s'appelle un foncteur.
-- ;-)
On 11 Jan 2005 23:39:11 GMT, Michael
<michael_delva.enlever@hotmail.com>:
struct CompareByIndex
: public std::binary_function<const foo *, const foo *, bool>
Je n'ai jamais bien su si cet héritage sert à quelque chose ou pas. En
tout cas, le "public" n'est guère utile.
"CompareByIndex" est une classe, qu'on peut instancier (i.e. créer des
objets "comparateur"), même si dans ce cas précis elle n'a aucune
variable membre.
Un tel objet s'appelle un foncteur.
"CompareByIndex" est une classe, qu'on peut instancier (i.e. créer des objets "comparateur"), même si dans ce cas précis elle n'a aucune variable membre. Un tel objet s'appelle un foncteur.
-- ;-)
Michael
Désolé, je n'avais pas vu vos réponses...
Merci à tous les deux, ça marche très bien grâce à vous
Désolé, je n'avais pas vu vos réponses...
Merci à tous les deux, ça marche très bien grâce à vous
Merci à tous les deux, ça marche très bien grâce à vous
Michael
"CompareByIndex" est une classe, qu'on peut instancier (i.e. créer des objets "comparateur"), même si dans ce cas précis elle n'a aucune variable membre. Un tel objet s'appelle un foncteur.
Merci de m'éclairer là dessus, j'avoue ne jamais avoir trop su ce que c'était, et un peu fainéant pour me renseigner...
Quoi qu'il en soit j'utilisais déjà des foncteurs notamment pour std::find_if
Je n'avais pas remarqué qu'il fallait la même chose ici...
Encore merci!
"CompareByIndex" est une classe, qu'on peut instancier (i.e. créer des
objets "comparateur"), même si dans ce cas précis elle n'a aucune
variable membre.
Un tel objet s'appelle un foncteur.
Merci de m'éclairer là dessus, j'avoue ne jamais avoir trop su ce que
c'était, et un peu fainéant pour me renseigner...
Quoi qu'il en soit j'utilisais déjà des foncteurs notamment pour
std::find_if
Je n'avais pas remarqué qu'il fallait la même chose ici...
"CompareByIndex" est une classe, qu'on peut instancier (i.e. créer des objets "comparateur"), même si dans ce cas précis elle n'a aucune variable membre. Un tel objet s'appelle un foncteur.
Merci de m'éclairer là dessus, j'avoue ne jamais avoir trop su ce que c'était, et un peu fainéant pour me renseigner...
Quoi qu'il en soit j'utilisais déjà des foncteurs notamment pour std::find_if
Je n'avais pas remarqué qu'il fallait la même chose ici...
Encore merci!
kanze
Loïc Joly wrote:
Michael wrote:
je ne parviens pas à trouver quel doit être le troisième argument de std::sort pour trier un vecteur de la sorte:
class foo { private: int index; public: foo(int new_index) : index(new_index) {} bool operator<(const foo & compar) const { return index < compar.index; } int Get_Index() { return index; } }; [...]