1.map.find()

用find函数来定位数据出现位置,它返回的一个迭代器,当数据出现时,它返回数据所在位置的迭代器,如果map中没有要查找的数据,它返回的迭代器等于end函数返回的迭代器,函数原型

     iterator find (const key_type& k);
const_iterator find (const key_type& k) const;

实例程序:

// map::find
#include <iostream>
#include <map>

int main ()
{
  std::map<char,int> mymap;
  std::map<char,int>::iterator it;

  mymap['a']=50;
  mymap['b']=100;
  mymap['c']=150;
  mymap['d']=200;

  it = mymap.find('b');
  if (it != mymap.end())
    mymap.erase (it);

  // print content:
  std::cout << "elements in mymap:" << '\n';
  std::cout << "a => " << mymap.find('a')->second << '\n';
  std::cout << "c => " << mymap.find('c')->second << '\n';
  std::cout << "d => " << mymap.find('d')->second << '\n';

  return 0;
}

输出:

elements in mymap:
a => 50
c => 150
d => 200

2.map.lower_bound/upper_bound

map容器是根据键值进行排序的,STL库中的函数原型:

iterator upper_bound (const key_type& k);
const_iterator upper_bound (const key_type& k) const;

iterator lower_bound (const key_type& k);
const_iterator lower_bound (const key_type& k) const;

实例程序:

#include "stdafx.h"
#include <string>
#include <map>
 
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    map<int,string> maptmp;
    map<int,string>::iterator pos,pos1;
    maptmp[1]="a";
    maptmp[2]="b";
    maptmp[4]="c";
    maptmp[3]="f";
    maptmp[5]="d";
    pos = maptmp.lower_bound(3);
    pos1 = maptmp.upper_bound(3);
    printf("lower_bound %d=>%s\n",pos->first,pos->second.c_str());
    printf("upper_bound %d=>%s\n",pos1->first,pos1->second.c_str());
    system("pause");
    return 0;
}

输出:lower_bound 3=>"f"upper_bound 4=>"c"

一句话解释:
lower_bound(k)寻找  k <= ? 并返回其迭代器 
upper_bound(k)寻找 k < ? 并返回其迭代器 
(其中 ?为那个最接近的key值)
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐