map容器详解

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: map中所有元素都是pairpair中第一个元素为key键值,起到索引作用,第二个元素value实值所有元素会根据元素的键值自动排序本质:属于关联式容器,底层结构是二叉树优点:可以根据key值快速找到value值 map不可以有重复的key值,但可以有valuemultimap 可以有重复的key值构造函数原型:map<T1,T2>mp; map默认构造函数map(const map&mp)拷贝构造函数赋值:map& operator=(const map& mp)重载=操作符map大
 #include<iostream>
 using namespace std;
 #include<map>

/*
map中所有元素都是pair

pair中第一个元素为key键值,起到索引作用,第二个元素value实值
所有元素会根据元素的键值自动排序

本质:

属于关联式容器,底层结构是二叉树

优点:

可以根据key值快速找到value值
map不可以有重复的key值,但可以有value
multimap 可以有重复的key值,

构造函数原型:

mapmp; map默认构造函数
map(const map&mp)拷贝构造函数

赋值:

map& operator=(const map& mp)重载=操作符

map大小和交换

函数原型:

size() 返回容器中元素的数目
empty() 判断容器是否为空
swap(st)交换两个集合的容器

插入和删除:

insert(elem); 在容器中插入元素
clear(); 清除所有元素
erase(pos) 删除pos迭代器所指的元素,返回下一个元素的迭代器
erase(beg,end)删除区间beg end所有元素,返回下一个元素的迭代器
erase(key) 删除容器中为key值的元素

查找和统计:

对map数据进行查找数据与统计数据

函数原型:

find(key); 查找key是否存在。存在返回该键的元素迭代器,用迭代器接收,不存在返回set.end();
cout(key); 统计key的元素个数,返回一个数

map容器的排序:

自定义排序
*/
void printmap(map& m)
{
for (map::iterator it = m.begin(); it != m.end(); it++)
{
cout << it->first << " " << it->second <<endl;
}
cout << endl;

}
void test01()
{
mapm;
//第一种
m.insert(pair(1, 10));
m.insert(pair(2, 20));
m.insert(pair(3, 30));
//第二种
m.insert(make_pair(4, 10));
//第三种
m.insert(map::value_type(5, 60));
//第四种
m[6] = 70;
printmap(m);
//mapm1;
//m1 = m; //重载=赋值
//printmap(m1);
//mapm2(m); //拷贝构造
//printmap(m2);

map<int, int>m1;
m1.insert(pair<int, int>(10, 100));
m1.insert(pair<int, int>(20, 200));
m1.insert(pair<int, int>(30, 300));
printmap(m1);
m1.erase(m1.begin());
m1.erase(20);//是按照key值删除,不能按照values值删除
m1.erase(m1.begin(), m1.end());

//m.swap(m1);
printmap(m);
//printmap(m1);

map<int,int>::iterator itt= m.find(3);
cout << itt->first << endl << itt->second << endl;

int num=m.count(3);
cout << num << endl;
//对于map而言cout结果要么为0,要么为1

}
class person
{
public:
person(int age,string name)
{
this->age = age;
this->name = name;
}
public:
int age;
string name;
};
class com
{
public:
//按年龄
bool operator()(const person& p1,const person& p2)const
{
return p1.age > p2.age;
}
};
void test02()
{
//moren从小到大排序
mapm;
person p1( 10,"xioajiejie");
person p2(20, "xioajie");
person p3(60, "xioa");
m.insert(make_pair(p1,110));
m.insert(make_pair(p2,120));
m.insert(make_pair(p3, 110));
for (map::iterator it = m.begin(); it != m.end(); it++)
{
cout << it->first.age << " " << it->first.name<second <<endl ;
}
cout << endl;
}
int main()
{
//test01();
test02();
system("pause");
return 0;
}

目录
相关文章
|
4月前
|
存储 C++ 索引
|
5月前
|
存储 算法 NoSQL
C++一分钟之-map与set容器详解
【6月更文挑战第21天】C++ STL的`map`和`set`是基于红黑树的关联容器,提供有序存储和高效查找。`map`存储键值对,键唯一,值可重复;`set`仅存储唯一键。两者操作时间复杂度为O(log n)。常见问题包括键的唯一性和迭代器稳定性。自定义比较函数可用于定制排序规则,内存管理需注意适时释放。理解和善用这些工具能提升代码效率。
63 3
|
5月前
|
存储 人工智能 C++
map容器在C++中的具体用法以及相关注意点
map容器在C++中的具体用法以及相关注意点
50 1
|
5月前
|
C++ 容器
C++ STL标准库 《map容器详解》
C++ STL标准库 《map容器详解》
44 0
|
5月前
|
存储 C++ 容器
C++ STL标准库 《map容器详解》
C++ STL标准库 《map容器详解》
72 0
|
5月前
|
C++ 容器
C++之map/multimap容器
C++之map/multimap容器
|
5月前
|
编译器 C++ 容器
通过红黑树封装 map 和 set 容器
通过红黑树封装 map 和 set 容器
|
5月前
|
存储 安全 C++
Map容器详解
Map容器详解
|
6月前
|
C++ 索引 容器
黑马c++ STL部分 笔记(9) map/multimap容器
黑马c++ STL部分 笔记(9) map/multimap容器
|
6月前
|
存储 安全 Java
Java容器类List、ArrayList、Vector及map、HashTable、HashMap
Java容器类List、ArrayList、Vector及map、HashTable、HashMap
45 0