std::map中的lower_bound与upper_bound

本文介绍了C++标准库std::map中的lower_bound和upper_bound函数,通过示例展示了它们如何查找并返回指定键值的迭代器。lower_bound返回大于等于键的第一个元素迭代器,而upper_bound返回大于键的第一个元素迭代器。在示例中,这两个函数被用于删除一段范围内的元素,并展示了删除后的map内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在工作中遇到了std::map中的lower_bound与upper_bound,再次记录下其功能和使用方式。

std::map<char, int> mp;

mp.lower_bound<key> : 返回的是第一个大于、等于key的iterator,如果没有则返回空。

mp.upper_bound<key> :返回的是第一个大于key的iterator,如果没有,则返回空

例子如下:

// map::lower_bound/upper_bound
#include <iostream>
#include <map>

int main ()
{
  std::map<char,int> mymap = {{'a', 20}, {'b', 40}, {'c', 60}, {'d', 80}, {'e', 100}};

// 否则使用下面的赋值方式
#if 0
  mymap['a']=20;
  mymap['b']=40;
  mymap['c']=60;
  mymap['d']=80;
  mymap['e']=100;
#endif

  auto itlow = mymap.lower_bound('b');  // itlow points to b
  auto itup = mymap.upper_bound('d');   // itup points to e (not d!)

  std::cout << "itlow " << itlow->first << " => " << itlow->second << '\n';
  std::cout << "itup " << itup->first << " => " << itup->second << '\n';

  auto upper = mymap.upper_bound('e');
  std::cout << "upper " << upper->first << " => " << upper->second << '\n';

  mymap.erase(itlow,itup);        // erases [itlow,itup)

  std::cout << "print content " << '\n';
  for (std::map<char,int>::iterator it=mymap.begin(); it!=mymap.end(); ++it)
    std::cout << it->first << " => " << it->second << '\n';

  return 0;
}

结果:

总结:

1、使用upper_bound(key)时,如果没有找到大于key的iterator时,返回为空

2、lower_bound(key)返回的是大于、等于key的iterator,如果没有,返回空。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值