下面是兩個std::lower_bound
& std::upper_bound
樣本示例中,注意比較拉姆達的簽名傳遞給他們 -不同的比較簽名:: LOWER_BOUND
const auto lower_x = std::lower_bound(
points.begin(), points.end(), rec.min_corner.x,
[](const RankedPoint &rp, const double x) { return rp.point.x < x; });
const auto upper_x = std::upper_bound(
points.begin(), points.end(), rec.max_corner.x,
[](const double x, const RankedPoint &rp) { return x < rp.point.x; });
什麼是可能的推理保持簽名完全相反?我沒有意識到這一點和gcc編譯(鐺沒有),當我用auto
而不是具有錯誤簽名的確定類型。讓我失望了10分鐘。
因爲比較函數的語義必須「小於'<'」。 – kennytm
範圍庫將允許投影去除這個問題:-) – Jarod42