En mi archivo de cabecera, he incluido el archivo std :: map y uso el espacio de nombre apropiado.
Uno de los miembros de mi es:Error de compilación utilizando los iteradores de mapa
map<unsigned int, double> pT_Spam;
Y en mi archivo .cpp que intento hacer algo que he estado haciendo con frecuencia desde hace algún tiempo:
for(map<unsigned int, double>::iterator it=pT_Spam.begin() ; it!=pT_Spam.end() ; it++) {/*code*/}
Lo anterior siquiera se menciona en uno de los ejemplos de usar std :: map en cplusplus.com. A pesar de que he hecho más o menos lo mismo en otras partes del código que no causan errores de compilación, en esta línea particular me sale el siguiente error de Cygwin:
error: conversion from `std::_Rb_tree_const_iterator<std::pair<const unsigned int, double> >' to non-scalar type `std::_Rb_tree_iterator<std::pair<const unsigned int, double> >' requested
que parece bastante extraño. ¿Alguna idea de lo que podría estar mal? (Mi cabecera es, por supuesto, incluido en mi .cpp)
Se queja de que el iterador devuelto por begin() es un const_iterator, pero lo está asignando a un iterador. Pero no estoy seguro de por qué, esto también me parece bien. ¿Qué compilador es esto? – Joe
[begin()] (http://cplusplus.com/reference/stl/map/begin/) parece ser capaz de devolver iteradores no const también. Uso g ++ de Cygwin en Windows. – jathanasiou