C++如何知道从map中没有返回值::

C++如何知道从map中没有返回值::,c++,stl,C++,Stl,我有一张非常简单的地图: std::map<int, double> distances; distances[20.5] = 1; distances[19] = 2; distances[24] = 3; 在本例中使用map::upper_bound时,如何知道是否没有任何返回值,例如: std::map<int, double>::iterator iter = distances.upper_bound(24); 24是max key,因此会返回意外的结果,但

我有一张非常简单的地图:

std::map<int, double> distances;
distances[20.5] = 1;
distances[19] = 2;
distances[24] = 3;
在本例中使用map::upper_bound时,如何知道是否没有任何返回值,例如:

std::map<int, double>::iterator iter = distances.upper_bound(24);
24是max key,因此会返回意外的结果,但是如何通过代码知道这一点呢?如何知道我已经达到了最大值


谢谢

> P>大多数C++中的迭代器将被设置为集合的末尾,以表示缺失值。这是迭代器不表示更多数据的唯一有效值

if (iter == distances.end())
    // no upper bound

<>你可以比较ITER和Dista.结尾,如果它们相等,那么你就得到了答案.

C++中的大多数迭代器将被设置为集合的末尾来表示缺失值.这是迭代器不表示更多数据的唯一有效值

所以你可以将iter与distance.end进行比较,如果它们相等,那么你就得到了答案。

这是distance.end,这很有意义。直观地说,上界返回迭代器,该迭代器指向您的键在或将在映射中的位置之后的第一个位置。如果贴图中的所有关键点都小于或等于您的关键点,则位于所有关键点之后的第一个位置是结束迭代器。

它是distance.end,这很有意义。直观地说,上界返回迭代器,该迭代器指向您的键在或将在映射中的位置之后的第一个位置。如果映射中的所有键都小于或等于您的键,则位于所有键之后的第一个位置是结束迭代器