当前位置:   article > 正文

STL map::find 使用方法简单例子_std::map find

std::map find

map中的find方法主要用于查找,给定key,可以返回该元素的对应迭代器,然后利用这个迭代器访问value内容.

  1. //map::find
  2. #include <iostream>
  3. #include <map>
  4. int main ()
  5. {
  6. std::map<char,int> mymap;
  7. std::map<char,int>::iterator it;
  8. mymap['a']=50;
  9. mymap['b']=100;
  10. mymap['c']=150;
  11. mymap['d']=200;
  12. it = mymap.find('b');
  13. if (it != mymap.end())
  14. mymap.erase (it);
  15. // print content:
  16. std::cout << "elements in mymap:" << '\n';
  17. std::cout << "a => " << mymap.find('a')->second << '\n';
  18. std::cout << "c => " << mymap.find('c')->second << '\n';
  19. std::cout << "d => " << mymap.find('d')->second << '\n';
  20. std::cout << "b => " << mymap.find('b')->second << '\n';
  21. std::cout << "e => " << mymap.find('e')->second << '\n';
  22. return 0;
  23. }

编译运行结果:

 

 

C++中auto关键字的使用及编译错误解决

如果修改代码,将std::map<char,int>::iterator it;注释掉,然后使用auto关键字:auto it = mymap.find('b');

  1. //map::find
  2. #include <iostream>
  3. #include <map>
  4. int main ()
  5. {
  6. std::map<char,int> mymap;
  7. //std::map<char,int>::iterator it;
  8. mymap['a']=50;
  9. mymap['b']=100;
  10. mymap['c']=150;
  11. mymap['d']=200;
  12. auto it = mymap.find('b');
  13. if (it != mymap.end())
  14. mymap.erase (it);
  15. // print content:
  16. std::cout << "elements in mymap:" << '\n';
  17. std::cout << "a => " << mymap.find('a')->second << '\n';
  18. std::cout << "c => " << mymap.find('c')->second << '\n';
  19. std::cout << "d => " << mymap.find('d')->second << '\n';
  20. std::cout << "b => " << mymap.find('b')->second << '\n';
  21. std::cout << "e => " << mymap.find('e')->second << '\n';
  22. return 0;
  23. }

 

如果直接使用g++命令编译会报错,大致如下:

原因:
默认把auto当作声明自动声明周期的关键字(C++98标准),而不是自动类型的关键字;
在C++11标准中auto可以在声明变量的时候根据变量初始值的类型自动为此变量选择匹配的类型

解决:
因此如果要解决此问题需要在编译时添加-std=c++11的编译选项;
        g++ -std=c++11 iterator.cpp

 

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号