1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
|
// temp.cpp : définit le point d'entrée pour l'application console.
//
#include "stdafx.h"
#include <cstdio>
#include <stddef.h>
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <iomanip>
#include <stdlib.h>
#include <ostream>
#include <time.h>
#include <math.h>
#include <map>
#include <vector>
#include <set>
#include <algorithm>
#include <iostream>
#include <string>
// Définition de notre structure à trier
template <class Key_Type, class Data_Type> struct proj
{
proj(Key_Type i, Data_Type s) : valeur(i), ident(s) {}
Key_Type valeur;
Data_Type ident;
};
// Mon foncteur
/*
template <class Key_Type, class Data_Type> struct sort_cles
{
bool operator ()(proj<Key_Type,Data_Type>& a1, proj<Key_Type,Data_Type>& a2)
{
return a1.valeur < a2.valeur;
}
}; */
//Ma fonction
template <class Key_Type, class Data_Type> bool sort_cles(const proj<Key_Type,Data_Type>& a1, const proj<Key_Type,Data_Type>& a2)
{
return a1.valeur < a2.valeur;
}
using namespace std;
template <class Key_Type, class Data_Type> class classe_template
{
public:
classe_template();
};
template <class Key_Type, class Data_Type>
classe_template<Key_Type,Data_Type>::classe_template()
{
vector<proj<Key_Type,Data_Type> > _map2;
_map2.push_back(proj<Key_Type,Data_Type>(0.25, 2));
_map2.push_back(proj<Key_Type,Data_Type>(5057.056, 6));
_map2.push_back(proj<Key_Type,Data_Type>(2.47527, 3));
_map2.push_back(proj<Key_Type,Data_Type>(0.247527, 1));
_map2.push_back(proj<Key_Type,Data_Type>(24.7527, 5));
_map2.push_back(proj<Key_Type,Data_Type>(24.752, 4));
// Test de la fonction seule sans le sort. Fonctionne
bool test=sort_cles<Key_Type,Data_Type> (proj<Key_Type,Data_Type>(5057.056, 6),proj<Key_Type,Data_Type>(0.247527, 1));
test=sort_cles<Key_Type,Data_Type> (proj<Key_Type,Data_Type>(0.247527, 1),proj<Key_Type,Data_Type>(5057.056, 6));
// sort avec mon foncteur -> erreur de compilation
// sort(_map2.begin(), _map2.end(), sort_cles<Key_Type,Data_Type>());
// le même sort mais en utilisant ma fontion et pas un foncteur -> même erreur
sort(_map2.begin(), _map2.end(), sort_cles<Key_Type,Data_Type>);
}
int _tmain(int argc, _TCHAR* argv[])
{
classe_template<float,unsigned int>();
} |
Partager