我在使用find()函數時出錯。下面是代碼: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;
}
我發現了一個compiller錯誤:
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)和find(m.begin(),m.end(),5)的速度,所以我需要使它們都正常工作。
與比較簡單的容器比較,這不是一個更好的測試嗎? – 2009-07-17 22:04:11
你能說_why_你需要std :: find而不是成員函數嗎?成員函數要快得多。 – rlbond 2009-07-17 22:32:02