C++ multimap容器逆序迭代器转化为顺序迭代器的函数base()的问题,难带base的用法不正确?
base()我是在网上看到的http://apps.hi.baidu.com/share/detail/16219142#include<iostream>#includ...
base()我是在网上看到的
http://apps.hi.baidu.com/share/detail/16219142
#include <iostream>
#include <map>
#include <utility>
using namespace std;
int main()
{
multimap<int,int> tmap;/*定义tmap为关键字不唯一的map关联容器*/
/*把1,2,3,4,5,6添入容器*/
tmap.insert(make_pair(1,1));tmap.insert(make_pair(2,2));
tmap.insert(make_pair(3,3));tmap.insert(make_pair(4,4));
tmap.insert(make_pair(5,5));tmap.insert(make_pair(6,6));
multimap<int,int>::iterator kp = tmap.end();
/*删除最后一个元素*/
tmap.erase(--kp);/*第一种方法不会导致逆序输出出错*/
//tmap.erase(tmap.rbegin().base());/*第二种方法会导致逆序输出出现运行错误,为什么*/
/*注:base()是把逆序迭代器转化为顺序迭代器,因为ease函数不接受逆序迭代器作为参数*/
/*输出删除后tmap的大小,此处输出为5,说明删除成功!?*/
cout << "The size of tmap is:"<< tmap.size() << endl;
/*用逆序迭代器逆序输出时,第二种删除方法出错*/
for(mp = tmap.rbegin(); mp != tmap.rend(); ++mp)
cout << mp->first << " ";
cout << endl;
return 0;
}
--------------------------------------
当用第二种时,屏幕输出
The size of tmap is:5
后面就出错了
昨天自己看书知道了,假设mp是一个逆序迭代器,mp和mp.base()不是指向同一个元素 展开
http://apps.hi.baidu.com/share/detail/16219142
#include <iostream>
#include <map>
#include <utility>
using namespace std;
int main()
{
multimap<int,int> tmap;/*定义tmap为关键字不唯一的map关联容器*/
/*把1,2,3,4,5,6添入容器*/
tmap.insert(make_pair(1,1));tmap.insert(make_pair(2,2));
tmap.insert(make_pair(3,3));tmap.insert(make_pair(4,4));
tmap.insert(make_pair(5,5));tmap.insert(make_pair(6,6));
multimap<int,int>::iterator kp = tmap.end();
/*删除最后一个元素*/
tmap.erase(--kp);/*第一种方法不会导致逆序输出出错*/
//tmap.erase(tmap.rbegin().base());/*第二种方法会导致逆序输出出现运行错误,为什么*/
/*注:base()是把逆序迭代器转化为顺序迭代器,因为ease函数不接受逆序迭代器作为参数*/
/*输出删除后tmap的大小,此处输出为5,说明删除成功!?*/
cout << "The size of tmap is:"<< tmap.size() << endl;
/*用逆序迭代器逆序输出时,第二种删除方法出错*/
for(mp = tmap.rbegin(); mp != tmap.rend(); ++mp)
cout << mp->first << " ";
cout << endl;
return 0;
}
--------------------------------------
当用第二种时,屏幕输出
The size of tmap is:5
后面就出错了
昨天自己看书知道了,假设mp是一个逆序迭代器,mp和mp.base()不是指向同一个元素 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询