Me gustaría usar std :: find_if para buscar el primer elemento en mi mapa que tiene un cierto valor en un elemento específico de su estructura de valores. Aunque estoy un poco confundido. Creo que necesito usar bind1st o bind2nd, pero no estoy seguro de que sea el camino correcto.std :: map find_if condición condición confusión
He aquí algunos pseudo-código:
struct ValueType { int x, int y, int z };
std::map<int, ValueType> myMap;
... {populate map}
std::map<int, ValueType>::iterator pos = std::find_if(myMap.begin(), myMap.end(), <?>);
Por lo tanto, digamos que quería encontrar el primer elemento del mapa en el que el miembro de .x del ValueType era equivalente a un determinado valor entero (que puede cambiar cada llamada).
¿Cuál sería la mejor manera de escribir una función o objeto de función para lograr esto? Entiendo que tiene que ser un predicado unario que me haga pensar que necesitaré bind1st o bind2nd para proporcionar el valor entero que estoy buscando, pero no estoy seguro de cómo hacerlo. ¡Ha pasado demasiado tiempo desde que miré esto! >. <
Dado que los elementos en el mapa están ordenados por clave, el orden de las entradas está bien definido, y pedir que el primero cumpla una condición también está bien definido. – celtschk
Sí, está bien definido. Pero el orden no depende del valor del ValueType. Eso es lo que estaba tratando de decir. –
Gracias, exactamente lo que necesitaba :) –