赞
踩
map中的find方法主要用于查找,给定key,可以返回该元素的对应迭代器,然后利用这个迭代器访问value内容.
- //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';
- std::cout << "b => " << mymap.find('b')->second << '\n';
- std::cout << "e => " << mymap.find('e')->second << '\n';
-
- return 0;
- }

编译运行结果:
如果修改代码,将std::map<char,int>::iterator it;注释掉,然后使用auto关键字:auto it = mymap.find('b');
- //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;
-
- auto 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';
- std::cout << "b => " << mymap.find('b')->second << '\n';
- std::cout << "e => " << mymap.find('e')->second << '\n';
-
- return 0;
- }

如果直接使用g++命令编译会报错,大致如下:
原因:
默认把auto当作声明自动声明周期的关键字(C++98标准),而不是自动类型的关键字;
在C++11标准中auto可以在声明变量的时候根据变量初始值的类型自动为此变量选择匹配的类型
解决:
因此如果要解决此问题需要在编译时添加-std=c++11的编译选项;
g++ -std=c++11 iterator.cpp
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。