J'essaie d'utiliser un unordered_set
à partir de la bibliothèque std C++. J'utilise l'espace de noms std.problèmes de compilation avec un ensemble non ordonné
using namespace std;
Le unordered_set
est dans une fonction de la mienne. Je voudrais l'utiliser pour mémoriser certaines valeurs.
int do_crazy_calculations(int n) {
static unordered_set<int> done_before;
done_before::iterator node_found = done_before.find(n);
// n has not been seen before, so do calculations and memoize the result.
if (node_found == done_before.end()) {
int result = actually_do_calculations(n);
done_before.insert(n, result);
return result;
}
// n has already been seen before, just return the memoized value.
else {
return node_found.get();
}
}
Cependant, je reçois cette erreur de compilation:
CplusplusExperiment.cpp: In function
'int do_crazy_calculations(int)'
:
CplusplusExperiment.cpp:10:10: error:'unordered_set'
does not name a type
make: *** [CplusplusExperiment.o] Error 1
Cependant, je n'assignez un type à unordered_set
- int
droit? Que signifie cette erreur?
Avez-vous '#include'? –
Compilez-vous avec '-std = C++ 0x'? – ildjarn
'std :: unordered_set :: insert' ne prend pas deux' int', il n'en prend qu'un seul. Peut-être que vous pensez à 'std :: map'? –