"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Es válido comparar iteradores de diferentes contenedores en C ++?

¿Es válido comparar iteradores de diferentes contenedores en C ++?

Publicado el 2025-03-25
Navegar:571

Is It Valid to Compare Iterators from Different Containers in C  ?

Comparando iteradores de contenedores distintos

Cuando se trabaja con contenedores, es esencial comprender las implicaciones de comparar iteradores de diferentes contenedores. Surge la pregunta: ¿está permitido comparar iteradores que pertenecen a contenedores distintos?

Considere el siguiente código:

std::vector foo;
std::vector bar;
std::cout  

¿La expresión foo.begin () == bar.begin () producirá falso o conducir a un comportamiento indefinido?

en el estándar C 11 (n3337) puede arrojar luz sobre este dilema de dilema:

Sección 24.2.1 establece que dos iteradores, i y j, se consideran accesibles si existe una secuencia finita de las operaciones I que hacen que me ocurran a j. secuencia.
  • comparando iteradores de diferentes contenedores
[&]

reenseyriterators, que incluyen accesorizadores aleatorios, están sujetos a la sección 24.2.5. esta sección especifica que solo se puede utilizar para compáser a los iteradores de la misma secuencia.

    dada estos requisitos, la comparación de iteradores de diferentes contenedores es un comportamiento indefinido.
  • lwg emisión #446

lwg #446 aborda explícitamente esta cuestión, proponiendo la siguiente adición a la norma:

del resultado directamente de los resultados de la siguiente adición:

evaluando indirectamente cualquier función de comparación o el operador binario con dos valores de iterador como argumentos que se obtuvieron de dos rangos diferentes R1 y R2 [...] que no son subrangos de un rango común de un rango común, a menos que se describan explícitamente lo contrario. iteradores y contenedores de manipulación en su código.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3