C++ 学习小程序之 map 的用法

1. map::at

 1 #include <iostream>
 2 #include <string>
 3 #include <map>
 4 using namespace std;
 5 
 6 int main(){
 7     map<string, int> mymap = {
 8         {"alpha", 0},
 9         {"beta", 0},
10         {"gamma", 0}};
11 
12     mymap.at("alpha") = 10;
13     mymap.at("beta") = 20;
14     mymap.at("gamma") = 30;
15 
16     for (auto& x:mymap){
17         cout<<x.first<<": "<<x.second<<'\n';
18     }
19 
20     return 0;
21 }

2. make_pair example

 1 // make_pair example
 2 #include <utility>      // std::pair
 3 #include <iostream>     // std::cout
 4 
 5 int main () {
 6   std::pair <int,int> foo;
 7   std::pair <int,int> bar;
 8 
 9   foo = std::make_pair (10,20);
10   bar = std::make_pair (10.5,'A'); // ok: implicit conversion from pair<double,char>
11 
12   std::cout << "foo: " << foo.first << ", " << foo.second << '\n';
13   std::cout << "bar: " << bar.first << ", " << bar.second << '\n';
14 
15   return 0;
16 }

3. map::begin/end

 1 // map::begin/end
 2 #include <iostream>
 3 #include <map>
 4 
 5 int main ()
 6 {
 7   std::map<char,int> mymap;
 8 
 9   mymap['b'] = 100;
10   mymap['a'] = 200;
11   mymap['c'] = 300;
12 
13   // show content:
14   for (std::map<char,int>::iterator it=mymap.begin(); it!=mymap.end(); ++it)
15     std::cout << it->first << " => " << it->second << '\n';
16 
17   return 0;
18 }

4. map::insert(C++98)

 1 // map::insert(C++98)
 2 #include <iostream>
 3 #include <map>
 4 using namespace std;
 5 int main ()
 6 {
 7     map<char,int> mymap;
 8 
 9     // first insert function version (single parameter):
10     mymap.insert ( pair<char,int>('a', 100) );
11     mymap.insert ( pair<char,int>('z', 200) );
12 
13     pair<map<char, int>::iterator, bool> ret;
14     ret = mymap.insert (pair<char,int>('z',500));
15     if (ret.second == false){
16         cout<<"element 'z' already existed";
17         cout<<"with a value of " << ret.first->second << '\n';
18     }
19 
20     //second insert function version (with hint position):
21     map<char, int>::iterator it = mymap.begin();
22     mymap.insert (it, pair<char, int>('b',300)); // max efficiency inserting
23     mymap.insert (it, pair<char, int>('c',400)); // no max efficiency inserting
24 
25     //third insert function version (range insertion):
26     map<char,int> anothermap;
27     anothermap.insert(mymap.begin(),mymap.find('c'));
28 
29     // showing contents:
30     cout<<"mymap contains: \n";
31     for (it = mymap.begin(); it!= mymap.end(); ++it)
32         cout<<it->first<<"=>"<<it->second<<'\n';
33 
34     cout<<"anothermap contains: \n";
35     for(it=anothermap.begin(); it!=anothermap.end();++it)
36         cout<<it->first<<"=>"<<it->second<<'\n';
37 
38     return 0;
39 }