我有一个名为foo
的std::vector<int>
,它代表一组范围的“边界”值。
例如,如果foo
是{1, 3, 5, 7, 11},则这些范围分别是1-3、3-5、5-7、7-11。对我来说,这等同于4个时间段。请注意,每个时间段包括范围内的第一个数字,而不是最后一个数字。因此,在我的例子中,8出现在第3(从零开始)个时间段中。7也出现在第3个时间段中。11及以上的数字没有出现在任何时间段中。2出现在第0个时间段中。
给定一个名为bar
的int
,我使用
std::find_if(
foo.begin(),
foo.end(),
std::bind2nd(std::greater<int>(), bar)
) - foo().begin() - 1;
给我应该包含bar
的周期。
我的问题是:std::bind2nd
已被弃用,因此我应该重构。使用更新的函数,等价语句是什么?std::bind
并不会以明显的方式“落入”其中。
std::distance(foo.begin(), std::lower_bound(foo.begin(), foo.end(), bar)) - 1;
在这里似乎更合适。 - Jarod42