vector :: iterator의 map을 int로 정의 할 수 있지만 int에 대한 list :: iterator의 map을 정의 할 수없는 이유는 무엇입니까?벡터 <int> :: iterator 대 list <int> :: std :: map의 반복자 키
#include <vector>
#include <list>
#include <map>
#include <algorithm>
using namespace std;
int main()
{
int ia[] = {1,2,3,4,5,6,7,8,9,0};
vector<int> v(begin(ia), end(ia));
auto it1 = find(begin(v), end(v), 4);
map< vector<int>::const_iterator, int > m1;
m1.insert(map<vector<int>::const_iterator, int>::value_type(it1,*it1));
list<int> l(begin(ia), end(ia));
auto it2 = find(begin(l), end(l),5);
map< list<int>::const_iterator, int> m2;
m2.insert(map<list<int>::const_iterator, int>::value_type(it2,*it2)); //doesn't compile
}
오류 1 오류 C2678 : 이진 '<'없음 연산자 타입의 왼쪽 피연산자 취하는 발견 'CONST 성병 :: _ List_const_iterator < _Mylist>'(또는 허용 가능한 없다 문제의 두 반복자가 같은 벡터에서 오는 당신은 어떤 T.에 대한
std::list<T>
에서 반복자를 비교할 수 없습니다 변환)
그리고 무엇이 오류입니까? – Useless
오류 오류 C2678 : 2 진 '<': 'const std :: _ List_const_iterator <_Mylist>'형식의 왼쪽 피연산자를 사용하는 연산자가 없습니다 (또는 허용되는 변환이 없음) – hhbilly
질문에 나는 그것을 추가했다). 흥미로운 점은'm2.insert' 라인이나 m2의 _declaration_에 관한 것입니까? – Useless