En uno de los artículos C++ en STL, que se dice que -contenedores adaptadores no son compatibles con los iteradores
Desde adaptadores de contenedores no son compatibles con los iteradores, de ahí que no se pueden utilizar con los algoritmos de STL.
¿Pero no explicaba por qué los adaptadores de contenedor no son compatibles con los iteradores? ¿Alguien puede explicarme lo mismo?
+1. Para decir lo mismo de otra manera, el propósito de un iterador de contenedor es restringir la API del contenedor a las operaciones mínimas requeridas de la abstracción de la pila/cola/lo que sea. La iteración no es parte de un mínimo FIFO o LIFO. Si desea una cola iterable, que se comporte como una secuencia de lectura pero solo se pueda mutar como una cola, utilice la interfaz de contenedor completo (y, a elección, no llame a 'insert', only' push_back'), o bien escriba su propio adaptador de contenedor con una interfaz más amplia que 'std :: queue'. –
Entonces? El conjunto de operaciones expuestas sigue siendo un superconjunto de iteradores de entrada y salida. Y muchos algoritmos STL funcionan en eso. P.ej. 'std :: copy' bien podría usarse para empujar elementos en una pila. – MSalters
@MSalters: 'std :: copy' se puede usar para insertar elementos en una pila, con' back_inserter'. La pila no necesita un iterador para eso. Cualquier operación que requiera un iterador * sobre la pila * iría más allá de la definición mínima de la pila LIFO. Si los iteradores exponen un superconjunto estricto de las operaciones de la pila, eso significa que no es apropiado para una interfaz de pila mínima exponer un iterador. –