pair 类定义在
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 类定义在
创建map对象:
map StuInfo;
这就定义了一个用int作为键, 相关联string为值的map
插入pair对象:
pair mypair(1, "Tom");
StuInfo.insert(mypair);
StuInfo.insert(pair(5, "Jack"));
用[ ]操作符修改元素的值(键不可修改)
StuInfo[1] = "Jim";
因为键为 1 的元素存在,因此修改元素
用[ ]操作符添加元素
StuInfo[2] = "Lily";
先查找主键为2的项,没找到,因此添加这个键为 2 的项
PS:在代码中,[ ]中的数字为key值,并不是数组下标,key可是是任何类型的值!
用[ ]取得元素的值
cout<
用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() 迭代器
通过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 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