Как назначить начальный адрес для интегратора карты<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();
,