Me pregunto cuál es la razón detrás de hacer std::list<>::splice
para invalidar los iteradores que se refieren a la subsecuencia que se empalma en el nuevo contenedor. Esto me parece un poco ilógico, especialmente a la luz de la especificación estándar std::container::swap
. De acuerdo con el estándar de lenguaje std::container::swap
no invalida ningún iterador. Esta es una especificación práctica perfectamente razonable. Sin embargo, yo diría que std::list<>::splice
también se beneficiaría en gran medida del comportamiento de conservación de iteradores.std :: list <> :: splice invalida iteradores. ¿Razón fundamental?
entiendo que puede haber algunas consideraciones puramente académicas basadas en los conceptos de accesibilidad iterador, etc. Pero, al mismo tiempo splice
es una operación específica de std::list
, lo que significa que proporciona una especificación hecho a medida de que probablemente no causar un daño conceptual serio al diseño de STL en general.
¿Qué era? ¿Proscribiría o complicaría en exceso algunas implementaciones prácticas de std::list
, que no reconozco?
posible duplicado de [empalme() en std :: list e invalidación de iterador] (http://stackoverflow.com/questions/143156/splice-on-stdlist-and-iterator-invalidation) – jwismar