[英]Why there isn't lower_bound and upper_bound for unordered_multimap?
[英]multimap upper_bound return confusion
我有一个填充配对的多图。 我想迭代一个范围。 upper_bound不返回指向元素的迭代器,除非它找到第一个元素,其键大于传递给upper_bound的值。
如何判断upper_bound是否没有返回值,因为没有任何值超过传递的值?
谢谢!
至少如果内存服务,如果upper_bound没有找到一个键大于你传递的键的元素,它将返回container.end()
。 这对于迭代是很好的,因为一对迭代器的范数是范围的开始和一个结束,所以你可以使用container.end()
作为范围的结尾而没有任何问题。
upper_bound
实际上非常适合迭代,因为它指向范围结束后的元素 - 就像end
一样。 所以你形成你的循环类似。
for (auto it = mymap.lower_bound(start_key), end = mymap.upper_bound(end_key); it != end; ++it)
如果您只需要一个键,则将相同的值传递给lower_bound
和upper_bound
,或使用equal_range
同时获取两个键。 如果该值根本不存在于map中,则lower_bound
和upper_bound
将相等,并且循环将不会执行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.