Я пытаюсь использовать unordered_set
из библиотеки std C++. Я использую пространство имен std.Проблемы с сборкой с неупорядоченным набором
using namespace std;
unordered_set
находится в пределах моей функции. Я хотел бы использовать его для запоминания некоторых значений.
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();
}
}
Однако, я получаю эту ошибку компиляции:
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
Однако я назначить тип для unordered_set
- int
правильно? Что означает эта ошибка?
Вы '#include'? –
Вы компилируете с помощью '-std = C++ 0x'? – ildjarn
'std :: unordered_set :: insert' не принимает два' int ', это занимает только один. Может быть, вы думаете о 'std :: map'? –