c 网站开发实例教程,apk连接wordpress,申请建设部门网站的报告,wordpress项目下载文件C标准库中的map是一种关联容器#xff0c;它提供了键值对的映射关系。每个键值对中的键都是唯一的#xff0c;通过键可以访问对应的值。
map基本操作
插入元素#xff1a;
使用insert函数插入元素#xff0c;该函数有两种形式#xff1a;
// 插入一个pairconst Ke…C标准库中的map是一种关联容器它提供了键值对的映射关系。每个键值对中的键都是唯一的通过键可以访问对应的值。
map基本操作
插入元素
使用insert函数插入元素该函数有两种形式
// 插入一个pairconst Key, T对象
mapint, string mp;
mp.insert(pairint, string(1, one));// 插入多个pairconst Key, T对象
mapint, string mp;
mp.insert(make_pair(2, two));
mp.insert(make_pair(3, three));删除元素
使用erase函数删除元素该函数有两种形式
// 删除键为key的元素
mp.erase(key);// 删除指向位置pos的元素pos指向的元素会被删除并返回指向下一个元素的迭代器
auto it mp.begin();
for(; it ! mp.end(); it) {if(it-first key) {it mp.erase(it);}
}查找元素
使用find函数查找元素该函数返回一个迭代器指向找到的元素或指向容器的end位置。有三种形式
// 查找键为key的元素返回指向该元素的迭代器如果找不到返回end()
auto it mp.find(key);
if(it ! mp.end()) {// 找到了元素使用*it访问该元素的值string value it-second;
} else {// 没有找到元素
}// 查找键值大于等于key的第一个元素返回指向该元素的迭代器如果找不到返回end()
auto it mp.upper_bound(key);
if(it ! mp.end()) {// 找到了元素使用*it访问该元素的值string value it-second;
} else {// 没有找到元素
}// 查找键值小于等于key的第一个元素返回指向该元素的迭代器如果找不到返回end()
auto it mp.lower_bound(key);
if(it ! mp.end()) {// 找到了元素使用*it访问该元素的值string value it-second;
} else {// 没有找到元素
}map特性 提供一个映射关系元素以键值对key-value的形式存储能够根据key快速查找value。map中的键值对以Entry类型的对象实例形式存在。键key在map中不可重复但值value可以。每个键最多只能映射一个值。map接口提供了分别返回key值集合、value值集合以及Entry(键值对)集合的方法。map支持泛型形式如MapKey, T。map底层在jdk1.8之前主要是数组和链表组成jdk1.8之后新增了红黑树的特性。map是线程不安全的如果需要在线程中操作可以使用ConcurrentHashMap来操作。 应用举例
#include iostream
#include map
#include stringint main() {std::mapstd::string, int ages;// 插入数据ages[Alice] 25;ages[Bob] 30;ages[Charlie] 35;// 删除数据ages.erase(Bob);// 查找数据std::string name Bob;if (ages.find(name) ages.end()) {std::cout name is not found in the map. std::endl;} else {std::cout name is ages[name] years old. std::endl;}// 遍历数据for (const auto pair : ages) {std::cout pair.first is pair.second years old. std::endl;}return 0;
}这个例子中我们首先创建了一个map对象ages并向其中插入了三个键值对。然后我们使用erase函数删除了键为Bob的键值对。接着我们使用find函数查找关键字Bob如果找不到则输出Bob未找到否则输出Bob的年龄是xxx。最后我们使用循环遍历整个map并输出每个人的名字和年龄。