栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++核心编程(三十六)容器(map/multimap)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++核心编程(三十六)容器(map/multimap)

map/multimap

1)这两者属于关联式容器,底层是使用二叉树实现。

2)map中所有的元素都是pair
3)pair中第一个元素为key(键值),起索引作用,第二个元素为value(实值)
4)所有的元素都会根据袁术的键值自动排序
5)优点,可以通过键值快速找到value值
6)map不允许容器中重复key值元素
7)multimap允许容器中重复key元素

map构造和赋值

1)map//map默认构造函数;
2)map(const map &mp);//拷贝构造函数
3)map& operator*(coinst map &ma);//重载等号操作符

map的大小和交换

1)size();//返回容器中的元素个数
2)empty();//真为空不真不空
3)swap(st);//交换两个容器

map容器的删除和插入

1)insert();//插入
2)clear();//清空所有元素
3)erase(pos);//删除pos迭代器所指的元素,返回下一个元素的迭代器
4)earse(beg,end);//删除区间{beg,end)的所有元素,返回下一元素的迭代器
5)erase(key);//删除容器中值为key的元素

map容器的查找和统计

1)find(key);//查找key是否存在,若存在,返回该键的元素的迭代器,若不存在,返回end();
2)count(key);//统计key的元素个数

map容器的排序(内置数据类型)

默认排序时从小到大排

改变内置数据类型排序例子:

#include
#include
using namespace std;
class compareclass
{
public:
        bool operator()(int v1,int v2)const
        {
                return v1>v2;
        }
};
int main()
{
    map m;//默认无参构造
    m.insert(pair(1,2));//插入
  //  cout<first<second<(2,5));
     m.insert(pair(3,6));
     m.insert(make_pair(-1,0));
    for(map::iterator it=m.begin();it!=m.end();it++)
    {
            cout<first<<"  "<second< 
map容器排序(自定义数据类型) 
#include
#include
#include
using namespace std;
class myclass
{
    public:
        myclass(string name,int age):my_name(name),my_age(age)
        {
            my_name=name;
            my_age=age;
        }
    string my_name;
    int my_age;
};
class compareclass
{
public:
       const bool operator()(const myclass &p1,const myclass &p2)const
        {
                return p1.my_age>p2.my_age;
        }
};
int main()
{
    map m;//默认无参构造
    myclass p1("pdfdf",1);
    myclass p2("pdfd",5);
    myclass p3("xsdsf",4);
    m.insert(pair(p1,2));//插入
    m.insert(pair(p2,3));//插入
    m.insert(pair(p3,1));//插入
 
    for(map::iterator it=m.begin();it!=m.end();it++)
    {
           cout<first.my_age<<"  "<first.my_name<<" "<second< 

在使用自定义数据类型的排序的时候,注意几个问题:
错误信息一般是说什么重载参数类型不匹配

1.在定义仿函数的时候,仿函数的参数是否用const修饰(一般来说出错是这个原因)


2.仿函数是否用const修饰
3.返回值bool是否用const修饰
4.自定义数据类型的构造函数的是否是通过参数列表赋值

运算符重载除了+,-,<<,>>其他应该为成员函数

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1034390.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号