C++之STL(map容器初步)(蓝桥杯备战)

pair类型

pair 类定义在 头文件中。pair 是一个类模板,它将两个值组织在一起,这两个值的类型可不同。可以通过 first 和 second 公共数据成员来访问这两个值

pair对象常常作为元素被添加到map中

pair对象的定义

pair mypair(5 , "Jack");   //调用构造函数

pair otherPair ;           // 直接赋值
otherPair.first = 6;
otherPair.second = “Mike";

函数模板 make_pair( ) 能从两个变量构造一个 pair

pair aPair = make_pair( 5, 10 ) ;

map

1.创建及添加元素

map 类定义在头文件中

创建map对象:

map StuInfo;

这就定义了一个用int作为键, 相关联string为值的map

插入pair对象:

pair mypair(1, "Tom");
StuInfo.insert(mypair);

StuInfo.insert(pair(5, "Jack"));

2.map中使用运算符[ ]

用[ ]操作符修改元素的值(键不可修改

StuInfo[1] = "Jim";

因为键为 1 的元素存在,因此修改元素

用[ ]操作符添加元素

StuInfo[2] = "Lily";

先查找主键为2的项,没找到,因此添加这个键为 2 的项

PS:在代码中,[ ]中的数字为key值,并不是数组下标,key可是是任何类型的值!

用[ ]取得元素的值

cout<

3.在map中查找元素

用find()查找map中是否包含某个关键字

int target = 3;
map::iterator it;
it = StuInfo.find(target); //查找关键字target
if( it == StuInfo.end() )
{
    cout<<"not existed!"
}
else
{
    cout<<"find it!"<

若查找成功则返回目标项的迭代器,否则返回 StuInfo.end() 迭代器

4.在map中删除元素

通过erase()函数按照关键字删除

int r = StuInfo.erase(1);

若删除成功,返回 1 ,否则返回 0

用clear()清空map

再论迭代器

STL 中的迭代器按功能由弱到强分为5种:

1. 输入:Input iterators 提供对数据的只读访问。

1. 输出:Output iterators 提供对数据的只写访问

2. 正向:Forward iterators 提供读写操作,并能一次 一个地向前推进迭代器。

3. 双向:Bidirectional iterators提供读写操作,并能一次一个地向前和向后移动。

4. 随机访问:Random access iterators提供读写操作,并能在数据中随机移动。

编号大的迭代器拥有编号小的迭代器的所有功能,能当 作编号小的迭代器使用。

容器所支持的迭代器类别

容器 迭代器类别
vector 随机
deque 随机
list 双向
set/multiset 双向
map/multimap 双向
stack 不支持迭代器
queue 不支持迭代器

PS: 关联容器支持双向迭代器,它支持 : * 、++ 、– 、 = 、== 、!= 不支持 < 、<= 、>= 、 >

map中迭代器的使用

下面迭代器中”<”使用错误:

map m;
map::iterator it;
for(it = m.begin();it < m.end(); it++)  //不能使用“<”
{ ***** }

下面是map迭代器正确的用法:

map m;
map::iterator it;
for(it = m.begin();it != m.end(); it++)
{ ***** }

例子

#include
#include 
#include 
#include 
using namespace std;
int main ()
{
    map StuInfo;
    StuInfo.insert(pair(1, "Tom"));
    StuInfo.insert(pair(5, "Jack"));
    StuInfo[2]="Lily";
    map::iterator it;
    for(it = StuInfo.begin();it != StuInfo.end(); it++)
        cout<<(*it).first<<" "<<(*it).second<

你可能感兴趣的:(C++)