c++ 数据结构map的使用详解
什么是map
map
是C++ STL中提供的一种用以存储键值对(key-value)的容器。它能够以平均O(log n)复杂度进行搜索、插入、删除操作,并且保持元素顺序,是一种比较高效的数据结构。
map的基本用法
定义map
定义map
需要包含头文件<map>
。
语法:map<key_type, value_type> m;
示例代码:
#include <map>
using namespace std;
int main() {
map<int, string> m;
return 0;
}
定义一个以int
为键,以string
为值的map
。
插入元素
插入元素需要使用成员函数insert()
。
语法:m.insert(make_pair(key, value));
示例代码:
#include <map>
using namespace std;
int main() {
map<int, string> m;
m.insert(make_pair(1, "apple"));
m.insert(make_pair(2, "banana"));
m.insert(make_pair(3, "orange"));
return 0;
}
插入三个元素,键分别为1、2、3,值分别为"apple"、"banana"、"orange"。
删除元素
删除元素需要使用成员函数erase()
。
语法:m.erase(key);
示例代码:
#include <map>
using namespace std;
int main() {
map<int, string> m;
m.insert(make_pair(1, "apple"));
m.insert(make_pair(2, "banana"));
m.insert(make_pair(3, "orange"));
m.erase(2);
return 0;
}
删除键为2的元素。
访问元素
访问元素需要使用[]
操作符或at()
函数。
示例代码:
#include <map>
#include <iostream>
using namespace std;
int main() {
map<int, string> m;
m.insert(make_pair(1, "apple"));
m.insert(make_pair(2, "banana"));
m.insert(make_pair(3, "orange"));
cout << m[2] << endl;
cout << m.at(2) << endl;
return 0;
}
访问键为2的元素的值。
遍历元素
遍历元素需要使用迭代器。
示例代码:
#include <map>
#include <iostream>
using namespace std;
int main() {
map<int, string> m;
m.insert(make_pair(1, "apple"));
m.insert(make_pair(2, "banana"));
m.insert(make_pair(3, "orange"));
map<int, string>::iterator it;
for (it = m.begin(); it != m.end(); it++) {
cout << it->first << ": " << it->second << endl;
}
return 0;
}
遍历输出所有元素的键和值。
示例说明
示例1
题目要求:
从键盘上输入n个整数,将它们存储到map中,并输出每个数出现的次数。
示例代码:
#include <map>
#include <iostream>
using namespace std;
int main() {
map<int, int> m;
int n, num;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> num;
if (m.find(num) != m.end()) {
m[num]++;
} else {
m[num] = 1;
}
}
map<int, int>::iterator it;
for (it = m.begin(); it != m.end(); it++) {
cout << it->first << ": " << it->second << endl;
}
return 0;
}
输入:
8
1 2 3 4 5 1 2 3
输出:
1: 2
2: 2
3: 2
4: 1
5: 1
示例2
题目要求:
给定一个字符串,输出每个字符出现的次数。
示例代码:
#include <map>
#include <iostream>
using namespace std;
int main() {
map<char, int> m;
string s;
getline(cin, s);
for (int i = 0; i < s.length(); i++) {
if (m.find(s[i]) != m.end()) {
m[s[i]]++;
} else {
m[s[i]] = 1;
}
}
map<char, int>::iterator it;
for (it = m.begin(); it != m.end(); it++) {
cout << it->first << ": " << it->second << endl;
}
return 0;
}
输入:
hello, world
输出:
: 1
,: 1
d: 1
e: 1
h: 1
l: 3
o: 2
r: 1
w: 1
以上是 c++ 数据结构map的使用详解
的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c++ 数据结构map的使用详解 - Python技术站