]> git.llucax.com Git - z.facultad/75.29/dale.git/blobdiff - src/number.h
Reverse iterators para imprimir en orden
[z.facultad/75.29/dale.git] / src / number.h
index c620513f0a868940492f47892e0d921d83437b98..22f2d3b44542e05d66babfab32efb4cfd471425a 100644 (file)
@@ -19,8 +19,10 @@ struct number
        enum sign_type { positive, negative };
        typedef typename std::vector< T > chunk_type;
        typedef typename chunk_type::size_type size_type;
        enum sign_type { positive, negative };
        typedef typename std::vector< T > chunk_type;
        typedef typename chunk_type::size_type size_type;
-       typedef typename chunk_type::iterator iterator;
-       typedef typename chunk_type::const_iterator const_iterator;
+       typedef typename chunk_type::iterator iterator;\r
+       typedef typename chunk_type::const_iterator const_iterator;\r
+       typedef typename chunk_type::reverse_iterator reverse_iterator;\r
+       typedef typename chunk_type::const_reverse_iterator const_reverse_iterator;
 
        // Constructores (después de construído, el chunk siempre tiene al menos
        // un elemento).
 
        // Constructores (después de construído, el chunk siempre tiene al menos
        // un elemento).
@@ -54,7 +56,12 @@ struct number
        iterator begin() { return chunk.begin(); }
        iterator end() { return chunk.end(); }
        const_iterator begin() const { return chunk.begin(); }
        iterator begin() { return chunk.begin(); }
        iterator end() { return chunk.end(); }
        const_iterator begin() const { return chunk.begin(); }
-       const_iterator end() const { return chunk.end(); }
+       const_iterator end() const { return chunk.end(); }\r
+       reverse_iterator rbegin() { return chunk.rbegin(); }\r
+       reverse_iterator rend() { return chunk.rend(); }\r
+       const_reverse_iterator rbegin() const { return chunk.rbegin(); }\r
+       const_reverse_iterator rend() const { return chunk.rend(); }\r
+
 
        private:
        // Atributos
 
        private:
        // Atributos
@@ -145,8 +152,8 @@ number< T > operator+ (const number< T >& n1, const number< T >& n2)
 template < typename T >
 std::ostream& operator<< (std::ostream& os, const number< T >& n)
 {
 template < typename T >
 std::ostream& operator<< (std::ostream& os, const number< T >& n)
 {
-       // FIXME sacar una salida bonita en ASCII =)
-       std::copy(n.begin(), n.end(), std::ostream_iterator< T >(os, " "));
+       // FIXME sacar una salida bonita en ASCII =)\r
+       std::copy(n.rbegin(), n.rend(), std::ostream_iterator< T >(os, " "));
        return os;
 }
 
        return os;
 }