Ho un foo
che è un std::vector<int>
. Rappresenta i valori di "bordo" per un insieme di intervalli.Un sostituto per std :: bind2nd
Ad esempio, se foo
è {1, 3, 5, 7, 11}, gli intervalli sono 1-3, 3-5, 5-7, 7-11. Significativamente per me, questo equivale a 4 periodi. Nota che ogni periodo include il primo numero in un intervallo e non l'ultimo. Quindi nel mio esempio, 8 appare nel terzo periodo (a base zero). 7 appare anche nel 3 ° periodo. 11 e sopra non appaiono da nessuna parte. 2 appare nel periodo 0.
Data una bar
che è un int
, io uso
std::find_if(
foo.begin(),
foo.end(),
std::bind2nd(std::greater<int>(), bar)
) - foo().begin() - 1;
di darmi il periodo che dovrebbe contenere bar
.
Il mio problema: std::bind2nd
è deprecato quindi dovrei refactoring. Qual è l'affermazione equivalente usando le funzioni aggiornate? std::bind
non "rilascia" in modo ovvio.
BTW, 'std :: distance (foo.begin(), std :: lower_bound (foo.begin(), foo.end(), bar)) - 1;' sembra più appropriato qui. – Jarod42