站长平台seo哪些网站是同字形网页
news/
2025/9/24 6:19:16/
文章来源:
站长平台seo,哪些网站是同字形网页,农产品网络营销方式,网站开发招标文件范本STL常见容器目录#xff1a; 8.map/ multimap容器8.1 map基本概念8.2 map构造和赋值8.3 map大小和交换8.4 map插入和删除8.5 map查找和统计8.6 map容器排序8.6.1 内置类型排序8.6.2 自定义类型排序8.6.3 自定义和内置类型混合排序 8.map/ multimap容器
两者基本一致#xff… STL常见容器目录 8.map/ multimap容器8.1 map基本概念8.2 map构造和赋值8.3 map大小和交换8.4 map插入和删除8.5 map查找和统计8.6 map容器排序8.6.1 内置类型排序8.6.2 自定义类型排序8.6.3 自定义和内置类型混合排序 8.map/ multimap容器
两者基本一致除了以下区别 map和multimap区别 map不允许容器中有重复key值元素multimap允许容器中有重复key值元素。 注意对于value值都可以重复 8.1 map基本概念
简介
map中所有元素都是pairpair中第一个元素为key键值起到索引作用第二个元素为value实值可以根据key值快速找到value值所有元素都会根据元素的键值自动排序
本质
map/multimap属于关联式容器底层结构是用二叉树实现同set容器。
8.2 map构造和赋值
构造
mapT1, T2 mp; //map默认构造函数:map(const map mp); //拷贝构造函数
赋值
map operator(const map mp); //重载等号操作符 总结map中所有元素都是成对出现插入数据时候要使用对组。 8.3 map大小和交换
函数原型
size(); //返回容器中元素的数目empty(); //判断容器是否为空swap(st); //交换两个集合容器
8.4 map插入和删除
函数原型
insert(elem); //在容器中插入元素四种方式。clear(); //清除所有元素erase(pos); //删除pos迭代器所指的元素返回下一个元素的迭代器。erase(beg, end); //删除区间[beg,end)的所有元素 返回下一个元素的迭代器。erase(key); //删除容器中值为key的元素。
示例
#include map//包含头文件multimap头文件一样void Printmap(mapint, intm)//按照key值排序默认升序
{for (mapint,int::iterator it m.begin(); it ! m.end(); it) {cout key (*it).first value it-second endl;;}cout endl;
}
void test01()
{mapint, intm;//四种插入方式多用前两种m.insert(pairint, int(9, 90));//pair匿名对象m.insert(make_pair(8, 80));m.insert(mapint, int::value_type(7, 70));m[6] 60;//key6,value60Printmap(m);
cout 方括号访问元素 m[9] endl;//可利用[key]访问对于value值m.erase(7);//删除key7的元素若无相应key值则不删除Printmap(m);}8.5 map查找和统计
函数原型
find(key); //查找key是否存在,若存在返回该键的元素的迭代器若不存在返回set.end();count(key); //统计key的元素个数map返回0或1mutimap可能大于1
8.6 map容器排序
主要技术点:
利用仿函数可以改变排序规则。默认升序
8.6.1 内置类型排序
示例
#include mapclass MyCompare {
public:bool operator()(int v1, int v2) const {return v1 v2;//降序}
};void test02()
{//默认从小到大排序//利用仿函数实现从大到小排序mapint, int, MyCompare m;m.insert(make_pair(1, 10));m.insert(make_pair(2, 20));m.insert(make_pair(3, 30));m.insert(make_pair(4, 40));m.insert(make_pair(5, 50));for (mapint, int, MyCompare::iterator it m.begin(); it ! m.end(); it) {cout key: it-first value: it-second endl;}
}输出; key:5 value:50 key:4 value:40 key:3 value:30 key:2 value:20 key:1 value:10 8.6.2 自定义类型排序
示例
class Person
{
public:Person(string name, int age){this-m_Name name;this-m_Age age;}string m_Name;int m_Age;};
//仿函数
class MyCompare
{
public:bool operator()(const Person v1, const Person v2) const{//按照年龄进行排序 降序return v1.m_Age v2.m_Age;}
};void test03()
{//指定排序规则 mapPerson,Person, MyCompare m;//改变排序顺序需要在插入数据之前改变//插入自定义数据Person p1(刘备, 23);Person p2(关羽, 27);Person p3(张飞, 25);Person p4(赵云, 21);m.insert(make_pair(p1,p1));m.insert(make_pair(p2,p2));m.insert(make_pair(p3,p3));m.insert(make_pair(p4,p4));for (mapPerson, Person, MyCompare::iterator it m.begin(); it ! m.end(); it) {cout 姓名 it-second.m_Name 年龄 it-second.m_Age endl;}
}
输出 姓名关羽 年龄27 姓名张飞 年龄25 姓名刘备 年龄23 姓名赵云 年龄21 8.6.3 自定义和内置类型混合排序
示例
#include map
class Person
{
public:Person(string name, int age){this-m_Name name;this-m_Age age;}string m_Name;int m_Age;};void test04()
{mapint,Person m;//若要改变排序顺序需要在插入数据之前改变//因为map排序是按照key值排序此处key为整型编译器可自行排序升序//降序参照8.6.1//插入自定义数据Person p1(刘备, 23);Person p2(关羽, 27);Person p3(张飞, 25);Person p4(赵云, 21);m.insert(make_pair(p1.m_Age,p1));m.insert(make_pair(p2.m_Age, p2));m.insert(make_pair(p3.m_Age, p3));m.insert(make_pair(p4.m_Age, p4));for (mapint, Person::iterator it m.begin(); it ! m.end(); it) {cout 姓名 it-second.m_Name 年龄 it-second.m_Age endl;}
}输出 姓名赵云 年龄21 姓名刘备 年龄23 姓名张飞 年龄25 姓名关羽 年龄27 总结 利用仿函数可以指定map容器的排序规则对于自定义数据类型map必须要指定排序规则,同set容器
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/915059.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!