Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
map::lower_bound()和map::upper_bound在C+中如何工作+;? 我试图熟悉C++中的地图,我也试图理解一些可以在它们上面使用的基本操作。然而,我唯一不明白的两个是下限(),和上限()。我已经查了很多次了,但不明白他们在做什么。有人能澄清一下吗?_C++_Dictionary_Std_Stdmap_C++ Standard Library - Fatal编程技术网

map::lower_bound()和map::upper_bound在C+中如何工作+;? 我试图熟悉C++中的地图,我也试图理解一些可以在它们上面使用的基本操作。然而,我唯一不明白的两个是下限(),和上限()。我已经查了很多次了,但不明白他们在做什么。有人能澄清一下吗?

map::lower_bound()和map::upper_bound在C+中如何工作+;? 我试图熟悉C++中的地图,我也试图理解一些可以在它们上面使用的基本操作。然而,我唯一不明白的两个是下限(),和上限()。我已经查了很多次了,但不明白他们在做什么。有人能澄清一下吗?,c++,dictionary,std,stdmap,c++-standard-library,C++,Dictionary,Std,Stdmap,C++ Standard Library,下限和上限可能更容易理解为相等\u范围 equal_range返回一对迭代器,当将其视为半开区间时,它们是等价的值(在下要理解下界/上界您必须记住,映射不仅仅是一个将键映射到值的容器,而且,与真实世界的词汇表一样,它还强制元素按键排序,因此您不仅对查找特定项感兴趣,而且对快速定位对象感兴趣某个键的“环境”可能实际上并不存在 假设您有一个映射,它将字典中的单词映射到其他单词,使用lower_bound,它将返回大于或等于给定值的第一项;所有以该前缀开头的单词,按字典顺序进行比较,都将满足此标准(因

下限和上限可能更容易理解为
相等\u范围


equal_range
返回一对迭代器,当将其视为半开区间时,它们是等价的值(在
下要理解
下界
/
上界
您必须记住,
映射
不仅仅是一个将键映射到值的容器,而且,与真实世界的词汇表一样,它还强制元素按键排序,因此您不仅对查找特定项感兴趣,而且对快速定位对象感兴趣某个键的“环境”可能实际上并不存在

假设您有一个
映射
,它将字典中的单词映射到其他单词,使用
lower_bound
,它将返回大于或等于给定值的第一项;所有以该前缀开头的单词,按字典顺序进行比较,都将满足此标准(因此您可能会得到指向“danger”的迭代器)。现在,只要前缀匹配(“danger”、“danger”、…),您就可以向前迭代

另一个例子:你有一个从时间戳到事件的映射,你想查找两个时间戳之间发生了什么。你可以使用
下限
来定位第一个元素
=
,而不是初始时间戳,即使这样的时间戳实际上并不对应于任何存储的事件(因此
查找
也不行),然后继续前进,只要你在你感兴趣的范围内


类似的例子也可以用
上限
-尽管老实说,我认为我很少使用它。

你不明白什么?可能的实现,目的?它们返回什么和它们的目的。[见此]()类似于,但对于
std::map
。来自算法的文档给出了一些例子。”我已经查了很多次了,但不明白他们在做什么——“当你”查的时候“,关于你不理解的解释是什么?你能提供链接吗?这实际上是不准确的。下界与其使用的措辞相反,不会给你比当前键小的最大键。它实际上是一个令人不快的功能,因为这是一个非常有用的功能。但它没有这样做。@Amir:你说的是真的(您所描述的通常是我自己经常实现的一个有用的操作,它基于
下限
),我重新阅读了我的答案好几次,我不知道我在哪里说过
下限
返回比请求的键小的最大键,我想我总是说它返回第一个键
=
…你能准确地指出我在哪里写了不正确的措词吗?顺便说一句,对于上限/下限术语,它实际上是一致的在C++中使用“<代码>、”、代码>间隔的ENT。您是对的。我想我可能误解了您在我快速阅读时提到的一些要点。您正确地提到,LoeLoLyBand将给出等于或大于我们正在搜索的密钥的值。