C++ map //map/multimap容器 //map容器 构造和赋值 //map大小 和 交换 //map插入和删除 //map查找和统计 //map容器排序

  1 //map/multimap容器  //map容器 构造和赋值  //map大小 和 交换
  2 //map插入和删除   //map查找和统计   //map容器排序
  3 
  4 #include<iostream>
  5 #include<map>
  6 #include<string>
  7 
  8 using namespace std;
  9 
 10 //map容器 构造和赋值
 11 //打印
 12 void printMap(map<int, int>& m)
 13 {
 14     for (map<int, int>::iterator it = m.begin(); it != m.end(); it++)
 15     {
 16         cout << "Key = " << (*it).first << " value= " << it->second << endl;
 17 
 18     }
 19     cout << endl;
 20 }
 21 //map容器 构造和赋值
 22 void test01()
 23 {
 24     map<int, int>m;
 25     m.insert(pair<int,int>(1,10));
 26     m.insert(pair<int,int>(2,20));
 27     m.insert(pair<int,int>(3,30));
 28     m.insert(pair<int,int>(4,40));
 29 
 30     printMap(m);
 31 
 32     //拷贝构造
 33     map<int, int>m2(m);
 34     printMap(m2);
 35     //赋值
 36     map<int, int>m3;
 37     m3 = m2;
 38     printMap(m3);
 39 
 40 
 41 }
 42 //map大小 和 交换
 43 //大小
 44 void test02()
 45 {
 46     map<int, int>m;
 47     m.insert(pair<int, int>(1, 10));
 48     //m.insert(pair<int, int>(1, 10));
 49     m.insert(pair<int, int>(2, 20));
 50     m.insert(pair<int, int>(3, 30));
 51     m.insert(pair<int, int>(4, 40));
 52 
 53     if (m.empty())
 54     {
 55         cout << "M为空!!" << endl;
 56     }
 57     else
 58     {
 59         cout << "M不为空!!" << endl;
 60         cout << "M的元素个数!" << m.size() << endl;
 61     }
 62 
 63 }
 64 //交换
 65 void test03()
 66 {
 67     map<int, int>m1;
 68     m1.insert(pair<int, int>(1, 10));
 69     //m.insert(pair<int, int>(1, 10));
 70     m1.insert(pair<int, int>(2, 20));
 71     m1.insert(pair<int, int>(3, 30));
 72     m1.insert(pair<int, int>(4, 40));
 73 
 74     map<int, int>m2;
 75     m2.insert(pair<int, int>(5, 100));
 76     //m.insert(pair<int, int>(1, 100));
 77     m2.insert(pair<int, int>(6, 200));
 78     m2.insert(pair<int, int>(7, 300));
 79     m2.insert(pair<int, int>(8, 400));
 80 
 81     cout << "交换前:" << endl;
 82     printMap(m1);
 83     printMap(m2);
 84 
 85     cout << "交换后:" << endl;
 86     m1.swap(m2);
 87     printMap(m1);
 88     printMap(m2);
 89 
 90 
 91 }
 92 //打印
 93 void printMap4(map<int, int>& m)
 94 {
 95     for (map<int, int>::iterator it = m.begin(); it != m.end(); it++)
 96     {
 97         cout << "key =" << it->first<<" value ="<<it->second<<endl;
 98     }
 99     cout << endl;
100 }
101 
102 //map插入和删除
103 void test04()
104 {
105     map<int, int>m;
106     //插入
107     //第一种
108     m.insert(pair<int, int>(1, 10));
109 
110     //第二种
111     m.insert(make_pair(2, 40));
112 
113     //第三种
114     m.insert(map<int, int>::value_type(3, 30));
115 
116     //第四种
117     m[4] = 40;
118 
119     //[]不建议取插入 可以去key访问到value
120     cout << m[4] << endl;
121     printMap4(m);
122 
123     //删除
124     m.erase(m.begin());
125     printMap4(m);
126 
127     m.erase(3);  //按照KRY 删除
128     printMap4(m);
129 
130     //清空
131     m.erase(m.begin(), m.end());
132     printMap4(m);
133     //清空
134     m.clear();
135     printMap4(m);
136 }
137 
138 //map查找和统计
139 void test05()
140 {
141     //查找
142     map<int, int>m;
143     m.insert(make_pair(1, 10));
144     m.insert(make_pair(2, 20));
145     m.insert(pair<int, int>(3, 30));
146     m.insert(pair<int, int>(4, 40));
147     m[4] = 20;  //map不允许插入重复的key的值
148     map<int,int>::iterator pos =m.find(3);
149     if (pos != m.end())
150     {
151         cout << "查到了元素 key =" << (*pos).first << "\tvalue=" << pos->second << endl;
152     }
153     else
154     {
155         cout << "没有找到!!" << endl;
156     }
157     //统计
158     //统计要么是0 要么是1   .... multimap统计可以大于1
159     int num =m.count(3);
160     cout << "num = " << num << endl;
161 
162 
163 
164 }
165 //排序
166 class MyCompare
167 {
168 public:
169     bool operator()( int v1, int v2) const
170     {
171         return v1 > v2;
172     }
173 };
174 
175 //map容器排序.
176 void test06()
177 {
178     map<int, int>m1;
179     m1.insert(pair<int, int>(1, 20));
180     m1.insert(pair<int, int>(2, 30));
181     m1.insert(make_pair(3, 40));
182     m1.insert(make_pair(4, 50));
183     m1.insert(make_pair(5, 10));
184     cout << "排序前:" << endl;
185     for (map<int, int>::iterator it = m1.begin(); it != m1.end(); it++)
186     {
187         
188         cout << "key =" << it->first << "\tvalue =" << (*it).second << endl;
189 
190     }
191 
192     map<int, int, MyCompare>m;
193     m.insert(pair<int, int>(1, 20));
194     m.insert(pair<int, int>(2, 30));
195     m.insert(make_pair(3,40));
196     m.insert(make_pair(4, 50));
197     m.insert(make_pair(5, 10));
198 
199     cout << "排序后:" << endl;
200     for (map<int, int, MyCompare>::iterator it = m.begin(); it != m.end(); it++)
201     {
202         cout << "key =" << it->first << "\tvalue =" <<(*it).second<< endl;
203 
204     }
205 }
206 
207 int main()
208 {
209 
210     test01();
211     test02();
212     test03();
213     test04();
214     test05();
215     test06();
216     system("pause");
217     return 0;
218 }

 

posted on 2021-08-16 14:56  Bytezero!  阅读(62)  评论(0编辑  收藏  举报