iterators - C++: ¿Cómo escribir un const_iterator?
vector:: iterator (3)
Encuentro que la forma más fácil de implementar iteradores es boost :: iterator . Si desea lanzar el suyo, creo que la firma debe ser:
class const_iterator : public std::iterator<std::bidirectional_iterator_tag, const T> {
con la implementación de la misma (suponiendo que esté utilizando reference_type y demás en sus firmas de funciones)
Escribí mi propia plantilla de contenedor con un iterador. ¿Cómo implemento const_iterator?
template <class T>
class my_container {
private:
...
public:
my_container() : ... { }
~my_container() { }
class iterator : public std::iterator<std::bidirectional_iterator_tag, T> {
public: ...
La única diferencia debería ser que cuando quitas la referencia de un iterador de const obtienes una referencia constante en lugar de una referencia al objeto en el contenedor.
Roger Pate, value_types son "simples". Sospecho que verás la const si miras iterator_traits :: const_iterator> :: reference, que creo que será "const int &".