Vorrei utilizzare std :: find_if per cercare il primo elemento nella mia mappa che ha un determinato valore in un elemento specifico della sua struttura di valori. Sono un po 'confuso però. Penso di aver bisogno di usare bind1st o bind2nd, ma non sono sicuro che sia la strada giusta da percorrere.std :: map find_if condition confusion style
Ecco alcuni pseudo-codice:
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(), <?>);
Quindi, diciamo che volevo trovare il primo elemento della mappa in cui il membro .x del ValueType è stato pari a un certo valore intero (che può cambia ogni chiamata).
Quale sarebbe il modo migliore per scrivere una funzione o un oggetto funzione per ottenere ciò? Capisco che deve essere un predicato unario che mi fa pensare che avrò bisogno di bind1st o bind2nd per fornire il valore intero che sto verificando, ma non sono sicuro di come farlo. È passato troppo tempo da quando ho guardato questa roba! >. <
Poiché gli elementi nella mappa sono ordinati per chiave, l'ordine delle voci è ben definito e quindi il primo che soddisfa una condizione è anche ben definito. – celtschk
Sì, è ben definito. Ma l'ordine non dipende dal valore di ValueType. Questo è quello che stavo cercando di dire. –
Grazie, esattamente quello di cui avevo bisogno :) –