Tôi có một foo
là std::vector<int>
. Nó đại diện cho các giá trị "cạnh" cho một tập các phạm vi. Ví dụ: nếu foo
là {1, 3, 5, 7, 11} thì phạm vi là 1-3, 3-5, 5-7, 7-11. Đáng kể đối với tôi, điều này tương đương với 4 giai đoạn. Lưu ý rằng mỗi khoảng thời gian bao gồm số đầu tiên trong một phạm vi và không phải là số cuối cùng. Vì vậy, trong ví dụ của tôi, 8 xuất hiện trong khoảng thời gian thứ 3 (không dựa trên). 7 cũng xuất hiện trong giai đoạn thứ 3. 11 và ở trên không xuất hiện ở bất cứ đâu. 2 xuất hiện trong khoảng thời gian thứ 0.Một sự thay thế cho std :: bind2nd
Cho một bar
mà là một int
, tôi sử dụng
std::find_if(
foo.begin(),
foo.end(),
std::bind2nd(std::greater<int>(), bar)
) - foo().begin() - 1;
để cho tôi thời gian đó nên chứa bar
.
Vấn đề của tôi: std::bind2nd
không được chấp nhận vì vậy tôi nên tái cấu trúc lại. Câu lệnh tương đương sử dụng các hàm được cập nhật là gì? std::bind
không "rơi vào" theo cách hiển nhiên.
BTW, 'std :: distance (foo.begin(), std :: lower_bound (foo.begin(), foo.end(), bar)) - 1;' có vẻ phù hợp hơn ở đây. – Jarod42