C C++最新STL-map multimap成员函数实例讲解(C++)_stl map成员函数,2024年最新这份1307页C C++面试全套真题解析

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

1map/multimap的基本概念

1 .map/multimap中所有元素都是pair(配对)
2 .pair的实现是一个结构体,将key和value放在一起来保存,主要的两个成员变量是first second 因为是使用struct不是class,所以可以直接使用pair的成员变量。
3 .所有元素都会根据元素的键值自动排序

map/multimap和set/multiset一样,属于关联式容器,底层结构是由二叉树实现

map/multimap区别:
1 .map储存的map不允许容器中有重复key值元素
2 .multimap允许容器中有重复key值元素

2. map/multimap容器的构造和赋值

#include<iostream>

using namespace std;

#include<map>//map容器头文件 

void printMap(map<int,int>&m)//打印map容器
{
	for (map<int, int>::iterator it = m.begin(); it != m.end(); it++)
	{
		cout << "key = " << it->first << " value = " << it->second << endl;
	}
	cout << endl;
}
void printMultimap(multimap<int,int>&m)//打印multimap容器
{
	for (multimap<int, int>::iterator it = m.begin(); it != m.end(); it++)
	{
		cout << "key = " << it->first << " value = " << it->second << endl;
	}
	cout << endl;
}

void test01()
{
	map<int,int>m; //默认构造
	m.insert(pair<int, int>(1, 100));
	m.insert(pair<int, int>(2, 200));
	m.insert(pair<int, int>(3, 300));
	printMap(m);

	map<int, int>m2(m); //拷贝构造
	printMap(m2);

	map<int, int>m3;
	m3 = m2; //赋值
	printMap(m3);
}
void test02()
{
	multimap<int,int>n; //默认构造
	n.insert(pair<int, int>(1, 110));
	n.insert(pair<int, int>(2, 250));
	n.insert(pair<int, int>(2, 500));
	n.insert(pair<int, int>(3, 330));
	printMultimap(n);

	multimap<int, int>n2(n); //拷贝构造
	printMultimap(n2);

	multimap<int, int>n3;
	n3 = n2; //赋值
	printMultimap(n3);
}
int main()
 {
	cout<<"测试test01():"<<endl;
	test01();
	cout<<"-------------------------"<<endl;
	cout<<"测试test02():"<<endl;
	test02();
	system("pause");

	return 0;
}
 

测试结果
在这里插入图片描述

3.map/multimap大小和交换

#include<iostream>

using namespace std;

#include<map>//map容器头文件 

void printMap(map<int,int>&m)//打印map容器 
{
	for (map<int, int>::iterator it = m.begin(); it != m.end(); it++)
	{
		cout << "key = " << it->first << " value = " << it->second << endl;
	}
	cout << endl;
}
void printMultimap(multimap<int,int>&m)//打印multimap容器 
{
	for (multimap<int, int>::iterator it = m.begin(); it != m.end(); it++)
	{
		cout << "key = " << it->first << " value = " << it->second << endl;
	}
	cout << endl;
}

void test01()
{
	map<int, int>m;
	m.insert(pair<int, int>(1, 10));
	m.insert(pair<int, int>(2, 20));
	m.insert(pair<int, int>(3, 30));

	if (m.empty())
	{
		cout << "m为空" << endl;
	}
	else
	{
		cout << "m不为空" << endl;
		cout << "m的大小为: " << m.size() << endl;
	}
}


//交换
void test02()
{
	map<int, int>m;
	m.insert(pair<int, int>(1, 10));
	m.insert(pair<int, int>(2, 20));
	m.insert(pair<int, int>(3, 30));

	map<int, int>m2;
	m2.insert(pair<int, int>(4, 100));
	m2.insert(pair<int, int>(5, 200));
	m2.insert(pair<int, int>(6, 300));

	cout << "交换前" << endl;
	printMap(m);
	printMap(m2);

	cout << "交换后" << endl;
	m.swap(m2);
	printMap(m);
	printMap(m2);
}
void test03()
{
	multimap<int, int>m;
	m.insert(pair<int, int>(1, 110));
	m.insert(pair<int, int>(2, 1200));
	m.insert(pair<int, int>(2, 220));
	m.insert(pair<int, int>(3, 330));

	if (m.empty())
	{
		cout << "m为空" << endl;
	}
	else
	{
		cout << "m不为空" << endl;
		cout << "m的大小为: " << m.size() << endl;
	}
}
void test04()
{
	multimap<int, int>m;
	m.insert(pair<int, int>(1, 110));
	m.insert(pair<int, int>(3, 12500));
	m.insert(pair<int, int>(2, 220));
	m.insert(pair<int, int>(3, 330));

	multimap<int, int>m2;
	m2.insert(pair<int, int>(4, 1200));
	m2.insert(pair<int, int>(4, 15200));
	m2.insert(pair<int, int>(5, 2300));
	m2.insert(pair<int, int>(6, 3300));

	cout << "交换前" << endl;
	printMultimap(m);
	printMultimap(m2);

	cout << "交换后" << endl;
	m.swap(m2);
	printMultimap(m);
	printMultimap(m2);
}
int main() {
	cout<<"测试test01():"<<endl;
	test01();
	cout<<"----------------------"<<endl; 
	cout<<"测试test02():"<<endl;
	test02();
	cout<<"----------------------"<<endl; 
	cout<<"测试test03():"<<endl;
	test03();
	cout<<"----------------------"<<endl; 
	cout<<"测试test04():"<<endl;
	test04();
	cout<<"----------------------"<<endl; 
	system("pause");

	return 0;
}


测试结果
在这里插入图片描述
在这里插入图片描述

4. map/multimap插入和删除

#include<iostream>

using namespace std;

#include<map>//map容器头文件 

void printMap(map<int,int>&m)//打印map容器 
{
	for (map<int, int>::iterator it = m.begin(); it != m.end(); it++)
	{
		cout << "key = " << it->first << " value = " << it->second << endl;
	}
	cout << endl;
}
void printMultimap(multimap<int,int>&m)//打印multimap容器 
{
	for (multimap<int, int>::iterator it = m.begin(); it != m.end(); it++)
	{
		cout << "key = " << it->first << " value = " << it->second << endl;
	}
	cout << endl;
}
void test01()
{
	//插入
	map<int, int> m;
	//第一种插入方式
	m.insert(pair<int, int>(1, 10));
	//第二种插入方式
	m.insert(make\_pair(2, 20));
	//第三种插入方式
	m.insert(map<int, int>::value\_type(3, 30));
	//第四种插入方式
	m[4] = 40; 
	printMap(m);

	//删除
	m.erase(m.begin());
	printMap(m);

	m.erase(3);
	printMap(m);

	//清空
	m.erase(m.begin(),m.end());
	m.clear();
	printMap(m);
}

int main() {

	test01();

	system("pause");

	return 0;
}


测试结果
在这里插入图片描述

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

[外链图片转存中…(img-txFLdaMp-1715720984861)]
[外链图片转存中…(img-V3sFPnlI-1715720984862)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 23
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值