命名lower_bound,upper_bound c++
有人知道他们为什么给这些名字的地方吗?从数学后绑架开始,他们总是把我的思想留在了纠结中,因为它们都是数学下限,即有限世界中的最低限度。同样,STL中给出的自然语言定义是不良的心理模型IMO。
有人使用心理同义词能够与他们合作,还是只记得幼稚的实现?
lower_bound(rng, x) = get_iter_to(mathematical_lower_bound(rng | filter([](auto y)
{return x<=y;}))
upper_bound(rng, x) = get_iter_to(mathematical_lower_bound(rng | filter([](auto y)
{return x<y;})))
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
伊戈尔·坦德尼克(Igor Tandetnik)在评论中回答了这一点。
所讨论的集合是在保留订单时可以插入给定值的元素。
例如,如果我们想将
2
插入范围[0,1,2,2,3,4]
,那么我们可以在索引2、3或4。lower_bound
将迭代器授予范围的开始。upper_bound
在此范围内给出了最后一个元素。我想这是库实施者编写枢轴的名称,而不是我试图查找数字向量的键/索引。
Igor Tandetnik answered this in the comments.
The set in question is the the elements which the given value can be inserted before while preserving the order.
For example if we want to insert
2
in to the range[0,1,2,2,3,4]
then we could insert it at index 2, 3 or 4.lower_bound
gives the iterator to the start of the range.upper_bound
gives the last element in this range.I suppose this is a name for library implementers writing pivots, rather than me trying to look up keys/indices of a vector of numerics.
此示例来自
std :: Ranges :: Lower_bound
()更有帮助This example from
std::ranges::lower_bound
(link) is more helpful