¿Cómo comprobar si existe algún elemento ** ** en un `std :: vECTOR` a un índice dado

Morpheus:

Tengo una std::vectorcomo esta

std::vector<std::pair<T,T>> xyz. xyztiene una longitud de 10 y otra función rellena exactamente 3 puntos, decir 4, 6, y 8 con std::pair<T,T>. Mientras que la iteración a través del vector, quiero saber dónde están los puntos que no estén vacíos están ahí para que yo pueda seguir trabajando con los std::pair<T,T>s.

Creo que puedo utilizar c++17's std::optional<>pero yo estoy usando c++14. ¿Hay alguna forma de averiguar los puntos en una std::vectorque no están vacías en C ++ 14.

el vector se verá algo como esto después de la asignación de la función

index  value
 0:
 1:
 2:
 3:
 4:    <7,8>
 5:
 6:    <9,2>
 7:
 8:    <8,6>
 9:

Quiero iterar sobre el vector anterior y sólo decir imprimir el std::pairs

John Ding:

Usted no puede hacerlo si no se hace algo de trabajo de su estructura de datos, se inicializa para cada elemento en el vector.

La simplista y forma más rápida que pienso, es para almacenar una std::vector<bool>del mismo tamaño para almacenar si un elemento no sólo se inicializa, pero "modificado" más adelante también.

Si usted se preocupa de que es posible que se olvide de establecer el otro vector, los unen:

std::vector<std::pair<std::pair<int, int>, bool>> a;

Si aún piensa que esto es demasiado feo, puede que tenga que poner en práctica su propia sencilla optional

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=405649&siteId=1
Recomendado
Clasificación