map函数的详细介绍

本文详细介绍了C++ STL中的map容器,包括如何构造、插入元素、检查和覆盖值、遍历以及删除元素。map提供一对一的数据映射,并通过pair结构插入元素。当插入的键已存在,新值不会替换旧值,除非使用数组访问方式。同时展示了通过迭代器和关键字删除元素的方法。
摘要由CSDN通过智能技术生成
       标题 map函数

C++STL中map的使用策略(一)
2018-06-22阅读 5240
Map是STL的一个关联容器,它提供一对一的数据处理能力。比如有一个姓名的集合{“Tom”,”Jone”,”Mary”},班级集合{1,2},班级与姓名可能存在以下的映射关系:

   class(“Tom”) = 2,class(“Jone”) = 2,class(“Mary”) = 1

   我们称其中的姓名集合为关键字集合(key),班级集合为值集合(value)

   在C++中map的实现在一个<map>头文件中

1.构造一个集合

map<T1,T2>m;//名为m的,从T1类型到T2类型的映射
2.插入元素

#include
#include
using namespace std;
int main() {
map<string, int> dict;
dict.insert(pair<string, int>(“Tom”, 1)); // {“Tom”->1}
dict.insert(pair<string, int>(“Jone”, 2)); // {“Tom”->1, “Jone”->2}
dict.insert(pair<string, int>(“Mary”, 1)); // {“Tom”->1, “Jone”->2, “Mary”->1}
dict.insert(pair<string, int>(“Tom”, 2)); // {“Tom”->1, “Jone”->2, “Mary”->1}
return 0;
}
在C++中通过insert()方法向集合中插入一个新的映射,参数是一个pair类型的结构。这个pair是另一个STL模板——元祖。pair<int,char>(1,’a’)定义了一个整数1和字符a的pair。我们向映射中加入新映射对的时候就是通过pair来实现的。如果插入的key之前已经有value,不会用插入的新的value替代原来的value,也就是插入无效,但并不会报错。

   是如果插入语句没有生效,那么这就涉及到我们怎么知道insert语句是否插入成功的问题了,可以通过pair来获得是否插入成功,程序如下:

pair<map<int, string>::iterator, bool> insert_pair;
insert_pair = mapStudent.insert(map<int, string>::value_type (1, “student_one”));
我们通过pair的第二个变量来知道是否插入成功,它的第一个变量返回的是一个map迭代器,如果插入成功的话,insert_pair.second应该是true,否则为false。

   下面给出一个示例代码:

#include <bits/stdc++.h>
using namespace std;
int main()
{
map<int, string> mapStudent;
pair<map<int, string>::iterator, bool> insert_Pair;
insert_Pair = mapStudent.insert(pair<int, string>(1, “student_one”));
if(insert_Pair.second == true)
{
cout<<“Insert Successfully”<<endl;
}
else
{
cout<<“Insert Failure”<<endl;
}
insert_Pair = mapStudent.insert(pair<int, string>(1, “student_two”));
if(i

  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
map() 函数是 Python 内置的高阶函数,它接收一个函数和一个可迭代对象作为参数,然后对可迭代对象中的每个元素应用该函数,最终返回一个由结果组成的迭代器。 map() 函数的语法如下: map(function, iterable, ...) 其中,function 是要应用于每个元素的函数,iterable 是一个或多个可迭代对象,可以是列表、元组、集合、字典等。 下面是一个示例: ```python def square(x): return x ** 2 numbers = [1, 2, 3, 4, 5] squares = map(square, numbers) print(list(squares)) # 输出 [1, 4, 9, 16, 25] ``` 在上面的例子中,我们定义了一个函数 square(),它接收一个参数并返回它的平方。然后我们创建一个包含一些数字的列表 numbers,使用 map() 函数将 square() 函数应用于每个数字,并将结果存储在一个迭代器 squares 中。最后,我们将迭代器转换为一个列表并打印出来。 除了函数作为参数外,map() 函数还支持 lambda 表达式。例如: ```python numbers = [1, 2, 3, 4, 5] squares = map(lambda x: x ** 2, numbers) print(list(squares)) # 输出 [1, 4, 9, 16, 25] ``` 在这个例子中,我们使用 lambda 表达式来定义一个匿名函数,该函数接收一个参数并返回它的平方。其他部分与前面的示例类似。 需要注意的是,map() 函数返回的是一个迭代器,这意味着它不会立即计算所有结果,而是在需要时逐个计算。因此,如果要将结果存储在一个列表或其他数据结构中,请务必使用 list() 或其他适当的函数将迭代器转换为实际的结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值