#include <map>
using namespace std;
map<string, int> m1; // 定义一个空的map,键类型为string,值类型为int
map<string, int> m2 = {{"apple", 1}, {"banana", 2}, {"orange", 3}}; // 使用花括号进行初始化
map<string, int> m3(m2); // 使用拷贝构造函数进行初始化
#include <map>
using namespace std;
map<string, int> m = {{"apple", 1}, {"banana", 2}, {"orange", 3}};
// 获取map的大小
int size = m.size();
// 判断map中是否包含某个键
bool contains = m.count("apple"); // 判断map中是否包含键"apple"
// 获取map中某个键对应的值
int value = m["apple"]; // 获取键"apple"对应的值
// 修改map中某个键对应的值
m["apple"] = 4; // 将键"apple"对应的值修改为4
// map的插入和删除
m.insert({"pear", 5}); // 在map中插入键值对"pear"和5
m.erase("apple"); // 删除map中的键"apple"及其对应的值
// map的遍历
for (auto it = m.begin(); it != m.end(); ++it) {
cout << it->first << ": " << it->second << endl;
}
for (auto [key, value] : m) {
cout << key << ": " << value << endl;
}
#include <map>
#include <algorithm>
using namespace std;
map<string, int> m = {{"apple", 1}, {"banana", 2}, {"orange", 3}};
// map的排序
// map是按照键自动排序的,无需进行排序
// map的查找
auto it = m.find("apple"); // 查找键"apple"在map中的位置
if (it != m.end()) {
cout << "apple found in map" << endl;
} else {
cout << "apple not found" << endl;
}
// map的合并
map<string, int> m1 = {{"apple", 1}, {"banana", 2}};
map<string, int> m2 = {{"banana", 3}, {"orange", 4}};
m1.insert(m2.begin(), m2.end()); // 将m2中的键值对合并到m1中,若键相同则覆盖值
// map的排序和查找
using pair_type = decltype(m)::value_type;
auto compare = [](pair_type& p1, pair_type& p2) {
return p1.second < p2.second;
};
// 按照值从小到大排序
vector<pair_type> v(m.begin(), m.end());
sort(v.begin(), v.end(), compare);
// 查找值最大的键
auto max_it = max_element(m.begin(), m.end(), compare);
cout << "key with max value: " << max_it->first << endl;