<div dir="ltr">Hola Miguel Ángel,<div class="gmail_extra"><br><div class="gmail_quote">2014-02-06 7:06 GMT-05:00 Miguel Ángel Torres Fernández-Píñar <span dir="ltr"><<a href="mailto:miguelangeltorresfp@gmail.com" target="_blank">miguelangeltorresfp@gmail.com</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div><div><div>Hola, buenos días a todos.<br>
<br></div>Hay alguna forma de recorrer los elementos de una pila o de una cola usando las clases stack y queue ???<br><br></div>Creo que con estas clases no funcionan los iteradores, no ???<br>
 <br></div><div>Por ejemplo, declarando la siguiente pila :<br><br>stack<int> mi_pila;<br><br></div></div></blockquote><div><br></div><div>Por lo que he investigado, no se puede acceder a todos los elementos de forma fácil. Es posible que tengas que crear tu propio adjudicador (allocator, en inglés) para que la pila (o cola) comparta la misma memoria con otro contenedor, como por ejemplo, 'vector', 'list', o 'deque', con el que puedes recorrer los elementos adjudicados.</div>
<div><br></div><div>De todas maneras, creo que la mejor opción es usar otro contenedor, pero con algunas funciones miembro para que aparente tener la funcionalidad de una pila (o cola). Al fin y al cabo, estos dos contenedores - 'stack' y 'queue' - invocan ciertas funciones miembro de los contenedores en que se basan, que por defecto es 'deque'. Esto es,</div>
<div><br></div><div>mi_pila.push( ... )  =>  mi_pila.contenedor.push_back()</div><div>mi_pila.pop( ... )    =>  mi_pila.contenedor.pop_back()<br></div><div><div>mi_pila.top( ... )    =>  mi_pila.contenedor.back()<br>
</div></div><div><br></div><div>Por lo tanto, usa 'deque' pero usa solamente sus funciones miembro: 'push_back()', 'pop_back()', y 'back()', para recrear el comportamiento de una pila.</div>
<div><br></div><div>Pero si de verdad quieres usar la clase-plantilla, 'stack', podrías derivar de ella para tener acceso al contenedor miembro. En tu clase derivada, puedes ofrecer una función miembro para acceder a tal contenedor interno. Por ejemplo,</div>
<div><br></div><div>class MiPilaInt : public stack<int><br>{<br>  ...</div><div><br></div><div>public:<br>  stack<int> :: container_type & contenedor()  {...};<br>  const stack<int> :: container_type & contenedor() const  {...};<br>
};</div><div><br></div><div>Todo funcionaría como 'stack<int>', pero con la funcionalidad agregada de tener acceso al contenedor.</div><div><br></div><div><br></div><div>Espero que todo esto te sirva.</div><div>
<br></div><div>Steven</div><div><br></div></div></div></div>