1、map查找的方法
\qquad
第一种 查找方法为:find
,输入一个需要查找的key值,输出一个迭代器。若map中存在所要查找的key值,则返回该key值所在位置的迭代器;若map中不存在所要查找的key值,则返回map::end()
。
#include<map>
#include<string>
map<string, int> test=
{
{"one", 1},
{"two", 2},
{"three", 3}
};
map<string, int>::iterator ite1 = test.find("one");
auto ite2 = test.find("two");
\qquad
第二种 查找方法为:[]
,C++ STL的map类中对[]
做了重载,可以通过像数组元素访问的方式输入key值来查找map中的某个元素,若map中存在所要查找的key值,则返回key值所对应的实值(value),若map中不存在所要查找的key值,则返回0。
int v1 = test["one"];
int v2 = test["two"];
\qquad
第三种 查找方法为:at
,C++11中新加入一种查找方式,输入一个需要查找的key值,输出所找的实值的一个引用。若map中存在所要查找的key值,则返回输出所找的实值的引用;若map中不存在所要查找的key值,则抛出一个out_of_range
的异常。
int& v1 = test.at("one");
int v2 = test.at("two");
2、使用const char *
作为key
值
\qquad
若使用const char *
作为key
值,则在查找时,输入的key
值必须是"one"
这种形式,否则会出现查找不到的情况。若要通过带入变量或者自己定义const char *
带入,则可以将string
作为key
值。