C++ 语言中 标准模板库 ( STL ) 的 std::map 容器 提供了 begin() 成员函数 和 end() 成员函数 , 这两个函数 都返回一个迭代器 , 指向容器中的元素 ;
迭代器指向的 map 容器元素说明 : std::map 容器是一个关联容器 , 它存储的元素按键值自动排序 ; 每个元素是一个键值对 对组对象 , 即 std::pair
代码示例 :
#include "iostream"
using namespace std;
#include "map"
#include "string"
int main() {
// 创建一个空的 map 容器,键为 string 类型,值为 int 类型
map<string, int> myMap;
// 插入元素
myMap.insert(pair<string, int>("Tom", 18));
//容器的遍历
cout << "遍历容器 :" << endl;
for (map<string, int>::iterator it = myMap.begin(); it != myMap.end(); it++)
{
cout << it->first << "\t" << it->second << endl;
}
cout << "遍历结束" << endl;
// 控制台暂停 , 按任意键继续向后执行
system("pause");
return 0;
};
执行结果 :
遍历容器 :
Tom 18
遍历结束
请按任意键继续. . .
map#insert 函数原型如下 , 其 返回值是 pair
map#insert 函数原型 :
pair<iterator, bool> insert(const value_type& value);
下面的代码中 , map 容器的类型是 map
// 创建一个空的 map 容器,键为 string 类型,值为 int 类型
map<string, int> myMap;
// 插入键值对 ("Tom", 18)
myMap.insert(pair<string, int>("Tom", 18));
使用返回值接收上述 insert 函数插入 键值对元素 , 接收变量为 pair
// 创建一个空的 map 容器,键为 string 类型,值为 int 类型
map<string, int> myMap;
// 插入键值对 ("Tom", 18)
// 返回值类型为 pair
pair<map<string, int>::iterator, bool> insertRet = myMap.insert(pair<string, int>("Tom", 18));
上述返回的值类型为 pair
使用 insertRet.first 可以访问 上述 键值对的 map
使用 *(insertRet.first) 可以访问到 map
使用 insertRet.first->first 可以访问 键值对元素的 键 Key ,
使用 insertRet.first->second 可以访问 键值对元素的 值 Value ;
代码示例 :
#include "iostream"
using namespace std;
#include "map"
#include "string"
int main() {
// 创建一个空的 map 容器,键为 string 类型,值为 int 类型
map<string, int> myMap;
// 插入键值对 ("Tom", 18)
// 返回值类型为 pair
pair<map<string, int>::iterator, bool> insertRet = myMap.insert(pair<string, int>("Tom", 18));
// 判定插入是否成功
if (insertRet.second != true) {
cout << "(Tom, 18)插入失败" << endl;
} else {
cout << "(Tom, 18)插入成功 : " << insertRet.first->first << "\t" << insertRet.first->second << endl;
}
// 插入键值对 ("Tom", 12)
insertRet = myMap.insert(make_pair("Tom", 12));
// 判定插入是否成功
if (insertRet.second != true) {
cout << "(Tom, 12)插入失败" << endl;
}
else {
cout << "(Tom, 12)插入成功 : " << insertRet.first->first << "\t" << insertRet.first->second << endl;
}
//容器的遍历
cout << "遍历容器 :" << endl;
for (map<string, int>::iterator it = myMap.begin(); it != myMap.end(); it++)
{
cout << it->first << "\t" << it->second << endl;
}
cout << "遍历结束" << endl;
// 控制台暂停 , 按任意键继续向后执行
system("pause");
return 0;
};
执行结果 :
(Tom, 18)插入成功 : Tom 18
(Tom, 12)插入失败
遍历容器 :
Tom 18
遍历结束
请按任意键继续. . .