【发布时间】:2016-11-12 19:41:01
【问题描述】:
比如说我有:
struct my_stuff{
long my_value;
struct less_than{
bool operator()(const my_stuff &a, const my_stuff &b){
return a.my_value < b.my_value;
};
};
在我的代码中:
vector<my_stuff> my_vec;
这个向量已经包含了我感兴趣的所有对象。然后我根据 my_value 成员变量对我的向量进行了排序
sort(my_vec.begin(), my_vec.end(), my_stuff::less_than());
到目前为止一切都很好。现在,我的具有成员变量“my_value”的对象向量现在根据“my_value”的值进行排序。
我的问题/问题是:如何根据“my_value”获取此向量的下界和上界。例如,如果给定我想要 my_value 的 [low, high] 范围内的所有对象,我希望我的 lower_bound 指向该边界(低)中的最低对象,而我的 upper_bound 指向我的高。
到目前为止我尝试过的是......
auto low = lower_bound(myvec.begin()->my_value, my_vec.end()->my_value, val);
除了使用“upper_bound”而不是“lower_bound”之外,上限也一样。我如何在语法上实现这一点?在对对象向量进行排序后,我想要做的是能够找到一定范围内的所有对象。我相信 lower_bound 和 upper_bound 是解决这个问题的正确方法,但我很难写它。感谢您的任何帮助或指导!
【问题讨论】:
-
只是备注:你可以去掉
struct less_than,而是在my_stuff中实现小于运算符