gpt4 book ai didi

c++ - 对映射中的lower_bound和upper_bound

转载 作者:行者123 更新时间:2023-12-03 07:07:01 25 4
gpt4 key购买 nike

我正在尝试从here的配对图中了解lower_bound upper_bound
定义如下:
lower_bound:
在对对(x,y)的对的 lower_bound()对的映射中,将返回一个迭代器,该迭代器指向其第一个值大于或等于x并且第二个值大于或等于y的对。
如果不满足上述条件,则返回指向 {map.size(),0}对对的迭代器。
upper_bound:
在对对(x,y)的对 upper_bound()对的映射中,将返回一个迭代器,该迭代器指向第一个值大于x并且第二个值大于y的对。
如果不满足上述条件,则返回指向 {map.size(),0}对对的迭代器。
现在,让我们考虑以下示例。

map<pair<int, int>, int> mp;

mp.insert({ { 2, 3 }, 8 });
mp.insert({ { 2, 5 }, 5 });
mp.insert({ { 7, 1 }, 3 });
mp.insert({ { 9, 3 }, 1 });
mp.insert({ { 5, 0 }, 3 });
我们上面有一对 map 。
现在,如果我想找到对 {2,4} 的下限,结果是{2,5},根据定义,这对我来说似乎很好。定义说:“ lower_bound将返回一个迭代器,该迭代器指向第一个值大于或等于x且第二个值大于或等于y对的迭代器”。因此,在这种情况下2等于2,而5大于4。
但是,如果我想找到对 {2,2} 的上限,结果是 {2,3} ,根据定义,我觉得这是错误的。定义说:“ upper_bound将返回一个迭代器,该迭代器指向第一个值大于x并且第二个值大于y的对”,但是在上述情况下,第一个值等于x。根据定义, {2,2} 的上限应为 {9,3} ,其中9大于2,3大于2。
我想我在这里错过了一些东西。有人可以在这里帮我吗?

最佳答案

您正在按键值将此值存储在有序映射中。 map 键的顺序如下:

<2, 3> | <2, 5> | <5, 0> | <7, 1> | <9, 3> 
See here.
因此,实际的 std::map::upper_bound reference表示以下内容:

iterator upper_bound( const Key& key );

Returns an iterator pointing to the first element that is greater than key.


由此很容易看出,列表中大于 <2, 2>的第一个键是 <2, 3>(用于调用 mp.upper_bound(std::make_pair(2, 2)))。

关于c++ - 对映射中的lower_bound和upper_bound,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65034985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com