У меня ошибка при использовании функции find (). Вот код:
#include <iostream>
#include <map>
#define N 100000
using namespace std;
int main (int argc, char * const argv[]) {
map<int,int> m;
for (int i=0; i<N; i++) m[i]=i;
find(m.begin(), m.end(), 5);
return 0;
}
Я получаю сообщение об ошибке компилятора:
error: no match for 'operator==' in '__first. __gnu_debug::_Safe_iterator<_Iterator, _Sequence>::operator* [with _Iterator = std::_Rb_tree_iterator<std::pair<const int, int> >, _Sequence = __gnu_debug_def::map<int, int, std::less<int>, std::allocator<std::pair<const int, int> > >]() == __val'
Включая «алгоритм» ничего не меняется. Компиляция в VS2008 показывает похожую ошибку.
Я знаю о m.find (), но мне действительно нужно использовать find ().
Большое спасибо за вашу помощь!
P.S. На самом деле задача состоит в том, чтобы сравнить скорость m.find (5) и найти (m.begin (), m.end (), 5), поэтому мне нужно, чтобы они оба работали правильно.