我正在尝试使用来自 stl lib 的地图制作一个容器类,但我对const_iterator
.
在我的课堂ConjuntoPreguntas
上如何欣赏,我尝试使用不同的格式begin()
和end()
方法,但我没有找到正确的方法。
在我的主课中,我尝试使用imprimir
函数,即接收const ConjuntoPreguntas
,但存在问题。所以我需要使用const ConjuntoPreguntas&
.
void imprimir( const ConjuntoPreguntas& cp ){
ConjuntoPreguntas::const_iterator it= cp.cbegin();
};
int main(){
ConjuntoPreguntas CP;
ifstream fin("PreguntasConstitucion.txt");
fin >> CP;
imprimir(CP);
}
class ConjuntoPreguntas{
private:
map<int,Pregunta> preguntas;
public:
class const_iterator; /
class iterator{
private:
map<int,Pregunta>::const_iterator it;
public:
iterator & operator++(){
++it;
}
iterator & operator--(){
--it;
}
pair<const int,Pregunta> &operator *(){
return *it;
}
bool operator ==(const iterator &i){
return i.it==it;
}
bool operator !=(const iterator &i){
return i.it!=it;
}
friend class ConjuntoPreguntas;
friend class const_iterator;
};
/**
* @brief clase para iterar sobre la guia
**/
class const_iterator{
private:
map<int,Pregunta>::iterator it;
public:
const_iterator & operator++(){
++it;
}
const_iterator & operator--(){
--it;
}
const pair<const int,Pregunta> &operator *(){
return *it;
}
bool operator ==(const const_iterator &i){
return i.it==it;
}
bool operator !=(const const_iterator &i){
return i.it!=it;
}
friend class ConjuntoPreguntas;
};
/**
* @brief Inicializa un iterator al comienzo de la guia
* */
**iterator begin(){
iterator i;
i.it=preguntas.begin();
return i;
}
const_iterator cbegin()const{
const_iterator i ;
i.it = preguntas.begin();
return i ;
}
/**
const_iterator cbegin(){
const_iterator i ;
i.it = preguntas.begin();
return i ;
}
*/
/**
* @brief Inicializa un iterator al final de la guia
* */
iterator end(){
iterator i;
i.it=preguntas.end();
return i;
}
const_iterator cend()const{
const_iterator i;
i.it= preguntas.end();
return i;
}
/* const_iterator cend(){
const_iterator i;
i.it= preguntas.end();
return i;
}
*/**
};