Как назначить начальный адрес для интегратора карты<pair <long long int,long long int>,long long int>

Я создал карту из пары длинных и длинных int -

map< pair< long long int, long long int >,long long int >; 

и интегратор -

map< pair< long long int, long long int >, long long int >::iterator it1;

и когда я сделал it1=same.begin() компилятор выдает ошибку, почему это так?

Произошла ошибка:

no viable overloaded '=' 
it1=same12.begin();
~~~^~~~~~~~~~~~~~~

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/map:648:29: note: функция-кандидат (оператор неявного копирования) недопустима: неизвестное преобразование из __map_iterator<__ tree_iterator <__ value_type, [...]>, __node_pointer, [...] >> 'в' const __map_iterator<__ tree_iterator <__ value_type, [...]>, std:: __ 1:: __tree_node, long long>, void *> *, [...] >> 'для 1-го класса аргумента _LIBCPP_TYPE_VIS_ONLY __map_iterator

1 ответ

Решение

Ошибка говорит вам:

нет известного преобразования из '__map_iterator<...>' в 'const __map_iterator<_...>'

Обратите внимание на const,

Здесь это выглядит как same12 это const map (или const map&или, возможно, он используется внутри const метод, в котором применяется const-правильность). Это означает, что .begin() вернусьconst_iteratorне iterator,

Вам нужно изменить тип it1 к const_iterator вместо iterator, Полный тип должен быть: map<pair<long long int, long long int>, long long int>::const_iterator,

Или просто использовать auto it1 = same12.begin();,

Другие вопросы по тегам