网站跳转怎么做360,发稿类别是什么,qq官方网站进入,景泰县做网站常用STL #x1f388;1.映射#x1f388;2.map的基础使用#x1f52d;2.1引入库#x1f52d;2.2构造一个映射#x1f52d;2.3插入一对映射#x1f52d;2.4判断关键字是否存在#x1f52d;2.5遍历映射#x1f52d;2.6清空 #x1f388;1.映射 #x1f50e;映射是指两个… 常用STL 1.映射2.map的基础使用2.1引入库2.2构造一个映射2.3插入一对映射2.4判断关键字是否存在2.5遍历映射2.6清空 1.映射 映射是指两个集合之间的元素的相互对应关系。通俗地说就是一个元素对应另外一个元素。比如有一个姓名的集合{“Tom”,Jone,Mary},班级集合{1,2}。姓名与班级之间可以有如下的映射关系class(Tom)1,class(Jone)2,class(Mary)1.我们称其中的姓名集合为关键字集合班级集合为值集合。在C中我们常用的映射是map. 2.map的基础使用
2.1引入库
C中map的实现是在一个map头文件中在代码开头引入这个头文件并且同样加上一句using namespace std;
2.2构造一个映射
在C中我们构造一个map的语句为mapT1,T2 m.这样我们定义一个名为m的从T1类型到T2类型的映射。初识的时候m是空映射。比如mapstring,int m构建了一个字符串到整数的映射这样我们可以把一个字符串和一个整数关联起来。
2.3插入一对映射
在C中用insert()函数向集合中插入一个新的映射参数是一个pair.pair是一个标准库类型定义在头文件utility中。可以看成是有两个成员变量first和second的结构体并且重载了运算符先比较first大小如果一样再比较second.当我们创建一个pair时必须提供两个类型。我们可以像这样定义一个保存string和int的pair.
pairstring,int p;make_pair(v1,v2)函数返回由v1和v2初始化的pair,类型可以由v1和v2的类型推断出来。我们向映射对的时候就是通过插入pair来实现的。如果插入的key之前就已经存在了将不会用插入的新的volue替代原来的value,也就是这次插入是无效的。
#include map
#include string
#include utility
using naespace std;
int main()
{mapstring,int dict;dict.insert(make_pair(Tom,1));dict.insert(make_pair(Jone,2));dict.insert(make_pair(Mary,1));return 0;
}2.4判断关键字是否存在
C中如果你想知道某个元素是否在集合中出现你可以直接用count()函数。如果集合中存在我们要查找的元素返回1否则返回0。
#include map
#include string
#include iostream
using namespace std;
int main()
{mapstring, int dict;//{}dict[Tom]1;dict[Jone]2;dict[Mary]1;if (dict.count(Mary))cout Mary is in class dict[Mary] endl;return 0;
}2.5遍历映射
map的迭代器的定义和set差不多mapT1,T2::iterator it就定义了一个迭代器其中T1,T2分别是key和value的类型。C通过迭代器可以访问集合中的每个元素。这里迭代器指向的元素是一个pair,有first和second两个成员变量分别代表一个映射的key和value.我们用-运算符来获取值it-first和(*it).first的效果是一样的就是获取迭代器it指向的pair里first成员的值。
#include map
#include string
#include iostream
using namespace std;
int main()
{mapstring, int dict;//{}dict[Tom]1;dict[Jone]2;dict[Mary]1;for(mapstring,int::iterator it dict.begin();it!dict.end();it){coutit-first-it-secondendl;}return 0;
}2.6清空
C中调用clear()函数就可以清空map同时会清空map占用的内存。