2011-09-04 3 views
0
std::multimap<size_type,size_type>::iterator it; 
std::multimap<size_type,size_type>::iterator itlow = colToRow.lower_bound(cols[i]); 
std::multimap<size_type,size_type>::iterator itup = colToRow.upper_bound(cols[i]); 

if((it = std::find(itlow,itup,std::pair<size_type,size_type>(cols[i],b))) != itup) 

에 너 한테 찾아 왜 나에게 오류를주는이 유지 COLS는 [I]와 b 크기 유형 모두와 나는 multimap에 삽입 할 때,이 한 쌍으로 삽입 문제가 없습니다 않습니다 , 어떻게 다른 일을 할 수 있습니까?의 C++의 STL과는 multimap은

/usr/include/c++/4.3/bits/stl_algo.h: In function '_InputIterator std::__find(_InputIterator, _InputIterator, const _Tp&, std::input_iterator_tag) [with _InputIterator = std::_Rb_tree_iterator<std::pair<const unsigned int, unsigned int> >, _Tp = std::pair<unsigned int, unsigned int>]': 
/usr/include/c++/4.3/bits/stl_algo.h:3814: instantiated from '_IIter std::find(_IIter, _IIter, const _Tp&) [with _IIter = std::_Rb_tree_iterator<std::pair<const unsigned int, unsigned int> >, _Tp = std::pair<unsigned int, unsigned int>]' 
SMatrix.cpp:286: instantiated from here 
/usr/include/c++/4.3/bits/stl_algo.h:151: error: no match for 'operator==' in '__first.std::_Rb_tree_iterator<_Tp>::operator* [with _Tp = std::pair<const unsigned int, unsigned int>]() == __val' 
+2

오류가 무엇인가로 인해이 오류에서 힌트에

if((it = std::find(itlow,itup,std::pair<const size_type,size_type>(cols[i],b))) != itup) // ^^^^^ 

? – quasiverse

+0

은 편집을 완료했습니다. – doug

+1

우리는 colToRow 선언을 볼 수 있습니까? – young

답변

3

multimap<size_type, size_type>value_type 오히려 std::pair<size_type,size_type>보다는 std::pair<size_type const,size_type>입니다 :

, 오류를 주셔서 감사합니다.

std::pair<size_type,size_type>을 찾으려고 시도했지만 std::pair<size_type const,size_type>과 비교할 수 없습니다.

2

시도 :

error: no match for 'operator==' in '__first.std::_Rb_tree_iterator<_Tp>::operator* 
    [with _Tp = std::pair<const unsigned int, unsigned int>]() == __val' 
//      ^^^^^^^^^^^^^^^^^^