Tengo una std::vector
como esta
std::vector<std::pair<T,T>> xyz
. xyz
tiene 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::vector
que 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
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