2014-01-11 2 views
0

좋습니다. 나는 이미이 코드를 게시했다는 것을 알고있다. (나는 이전의 방법으로 고쳐졌다.) 그러나 계속 진행되고있는 뭔가가있는 것처럼 보이고 나는 이전의 다른 포스트를 편집하기를 원하지 않는다. 규칙). 나는 아래의 코드를 컴파일 할 때내 코드를 컴파일 할 때 safe_iterator.h에서 오류가 발생했습니다.

, 나는 깊은 도서관

safe_iterator.h: **error: no match for 'operator<' in '(+ __lhs)->__gnu_debug::_Safe_iterator<_Iterator, _Sequence>::base [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> > >]() < (+ __rhs)->__gnu_debug::_Safe_iterator<_Iterator, _Sequence>::base [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> > >]()'** 

어떤 아이디어 내에서 오류 메시지가? 제발 너무 가혹하지 마십시오. 나는 조금은 n00b이다. :)

// Returns the mode (most common element) of an integer array 
int mode(int* arrPtr, int size) { 
    assert (size > 0); 
    std::map<int,int> M; 
    for (int k = 0; k < size; ++k) 
     M[arrPtr[k]]++; 
    std::pair<int,int> maxpair(M.begin()->first, M.begin()->second); 
    for (std::map<int,int>::iterator it = M.begin() + 1; it < M.end(); ++it) 
     if (it->second > maxpair.second) maxpair = *it; 
    return (maxpair.first); 
} 
+0

아! iterator에 대한 for 루프의 문제라고 생각합니다. 당신은 그것을 말하지 않는다.

답변

0

반복자 당신은 it != end를 사용해야합니다 operator<

를 구현하지 않는, size가 제로가되는 조심!

+0

아직도 점점 더 많은 오류가 있습니다 ... 더 이상 아이디어가 없습니까? – user3178285

+0

같은 오류가 발생 했습니까? –

관련 문제