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
|
#include <stdio.h>
#include <map>
template <typename MAPTYPE, typename THEKEYTYPE>
class TemplateClass
{
public:
MAPTYPE data;
int update (THEKEYTYPE const &key, char value);
};
/**
* Met a jour la clef key avec la valeur value
* @param key
* @param value
* @return 0 si maj non necessaire, 1 si maj faite, -1 si creation dans la table
*/
template <typename MAPTYPE, typename THEKEYTYPE>
int TemplateClass<MAPTYPE,THEKEYTYPE>::update(THEKEYTYPE const &key, char value)
{
MAPTYPE::iterator p = data.find (key);
if (p != data.end())
{
if (p->second == value)
return 0;
else
{
p->second = value;
return 1;
}
}
else
{
data[key] = value;
return -1;
}
}
int main(int argc, char* argv[])
{
TemplateClass<std::map<int,char>, int> myMap;
printf ("Avec clef int\n");
printf ("1 -> %d (valeur creee, affiche, vaut -1)\n", myMap.update (10, 1));
printf ("2 -> %d (une valeur memorisee, non changee vaut 0)\n", myMap.update (10, 1));
printf ("3 -> %d (valeur mise a jour vaut 1)\n", myMap.update (10, 3));
printf ("4 -> %d (valeur creee, affiche, vaut -1)\n", myMap.update (11, 2));
TemplateClass<std::map<std::string,char>, std::string> myMapL;
printf ("Avec clef std::string ...\n");
printf ("1 -> %d (valeur creee, affiche, vaut -1)\n", myMapL.update ("toto", 1));
printf ("2 -> %d (une valeur memorisee, non changee vaut 0)\n", myMapL.update ("toto", 1));
printf ("3 -> %d (valeur mise a jour vaut 1)\n", myMapL.update ("toto", 3));
printf ("4 -> %d (valeur creee, affiche -1)\n", myMapL.update ("bazar", 2));
fgetc (stdin);
return 0;
} |
Partager