We can define map<vector<int>::iterator, int>
because the iterator of vector supports iterator arithmetic which includes <
operator.
But we cannot define map<list<int>::iterator, int>
because the iterator of list does not support iterator arithmetic and does not support <
operator.